Отсутствует зависимость FreeTypeFontGenerator в толстой банке, упакованной с Gradlew - PullRequest
0 голосов
/ 22 февраля 2020

Я упаковываю файл jar с

gradlew desktop:dist

, когда запускаю его с java 1.8 (openjdk)

java -jar desktop-1-0.jar

Выдается исключение ClassNotFoundException для класса FreeTypeFontGenerator. Весь 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

Я уже включил необходимые зависимости в файл build.gradle в каталоге root моего проекта для FreeTypeFont, как описано в libgdx wiki .

Я также обновил зависимости проекта (щелкните правой кнопкой мыши проект -> Gradle -> Refre sh Gradle Dependencies) и перестроил проект.

1 Ответ

1 голос
/ 22 февраля 2020

Решением для меня было добавить

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

в разделе рабочего стола моего файла build.gradle. Я попробовал это, так как импорт для модуля controler выглядел немного похожим.

Я понятия не имею, почему это не задокументировано, но после refre sh всех зависимостей gradle ( щелкните правой кнопкой мыши проект -> Gradle -> Refre sh Gradle Dependencies) и перестройте проект, и я смог без проблем запустить упакованный jar.

...