首页 > 解决方案 > LibGDX Gradle 损坏的构建

问题描述

我将 Android Studio 和这个 Gradle 更新到了 5.x 版。我不得不改变desktop.gradle一点。构建成功,但是当您运行生成的 .jar 时,会发生崩溃并出现错误:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NoClassDefFoundError: com/badlogic/gdx/graphics/g2d/freetype/FreeTypeFontGeneratorLoader
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:133) Caused by: java.lang.NoClassDefFoundError: com/badlogic/gdx/graphics/g2d/freetype/FreeTypeFontGeneratorLoader
    at ru.elvale.amfus.Amfus.initAssets(Amfus.java:99)
    at ru.elvale.amfus.Amfus.create(Amfus.java:45)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 4 more

更重要的是,运行gradlew desktop: run成功启动了应用程序。

desktop.gradle

apply plugin: "java"
sourceCompatibility='1.7'
sourceSets.main.java.srcDirs=[ "src/" ]
project.ext.mainClassName = "ru.elvale.amfus.desktop.DesktopLauncher"
project.ext.assetsDir = new File("../android/assets");
task run(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}
task debug(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
    debug = true
}
task dist(type: Jar) {
    from files(sourceSets.main.output.generatedSourcesDirs)
    from files(sourceSets.main.output.classesDirs)
    from files(sourceSets.main.output.dirs)
    from {configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }}
    from files(sourceSets.main.output.resourcesDir)
    from files(project.assetsDir)
    manifest {
        attributes 'Main-Class': project.mainClassName
    }
}
dist.dependsOn classes

.jar 中的文件

标签: android-studiogradlelibgdx

解决方案


推荐阅读