与gradlew打包的胖罐中缺少依赖项FreeTypeFontGenerator

时间:2020-02-22 16:46:33

标签: gradle jar libgdx gradlew freetype

我正在用

打包jar文件
gradlew desktop:dist

在使用Java 1.8(openjdk)运行它时

java -jar desktop-1-0.jar

会抛出FreeTypeFontGenerator类的ClassNotFoundException。整个Stacktrace如下

    java -jar desktop-1.0.jar
    Picked up _JAVA_OPTIONS: -Xmx512M
        Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: 
    java.lang.NoClassDefFoundError: com/badlogic/gdx/graphics/g2d/freetype/FreeTypeFontGenerator
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:135)
    Caused by: java.lang.NoClassDefFoundError: com/badlogic/gdx/graphics/g2d/freetype/FreeTypeFontGenerator
        at com.mygdx.tools.FontLoader.loadFont(FontLoader.java:13)
        at com.mygdx.stages.hud.ClientHud.(ClientHud.java:42)
        at com.mygdx.stages.hud.StartmenuHud.joinButtonClicked(StartmenuHud.java:67)
        at com.mygdx.stages.hud.StartmenuHud.access$100(StartmenuHud.java:16)
        at com.mygdx.stages.hud.StartmenuHud$2.touchDown(StartmenuHud.java:47)
        at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:57)
        at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:188)
        at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:158)
        at com.badlogic.gdx.scenes.scene2d.Stage.touchDown(Stage.java:281)
        at com.badlogic.gdx.backends.lwjgl.LwjglInput.processEvents(LwjglInput.java:357)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:221)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:128)
    Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 12 more

我已经在libgdx wiki中描述了FreeTypeFont项目根目录下的build.gradle文件中包含必需的依赖项。

我还刷新了项目依赖关系(右键单击项目-> Gradle->刷新Gradle依赖关系) 并重建项目。

1 个答案:

答案 0 :(得分:1)

对我来说,解决方案是添加

implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"

在build.gradle文件的桌面部分下。 我尝试了此操作,因为controler模块的导入看上去有点相似。

我不知道为什么没有对此进行记录,但是在刷新所有gradle依赖项(右键单击项目-> Gradle->刷新Gradle依赖关系)并重建项目后,我能够运行打包的jar没有任何问题。