PolygonShape Native Method не найден с использованием нового проекта libgdx gradle
У меня есть проект LibGDX в студии Android, который использует gradle.
Он работал хорошо до сегодняшнего утра, но из-за изменений в LibGDX теперь расширение box2d работает неправильно.
Я думаю, что уже сделал правильный импорт:
- build.gradle(корень проекта)
project(":core") {
apply plugin: "java"
dependencies {
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
compile fileTree (dir:'../libs', include:['*.jar'])
}
}
project(":desktop") {
apply plugin: "java"
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
compile fileTree (dir:'../libs', include:['*.jar'])
}
}
(остальная часть build.gradle опущена для простоты)
Однако, когда я пытаюсь использовать PolygonShape, я получаю следующую ошибку:
Исключение в потоке "Приложение LWJGL" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.UnsatisfiedLinkError: com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape() J at com.badlogic.gdx.backends.lwjgl.LwjglApplication $1.run(LwjglApplication.java:120) Вызвано: java.lang.UnsatisfiedLinkError: com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape() J at com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape(Native Метод) при com.badlogic.gdx.physics.box2d.PolygonShape. (PolygonShape.java:29) в com.marclabsoftware.app.utilities.BodyEditorLoader. (BodyEditorLoader.java:34) в com.marclabsoftware.app.utilities.Utilities.init(Utilities.java:81) в com.marclabsoftware.app.App.create(App.java:50) в com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136) в com.badlogic.gdx.backends.lwjgl.LwjglApplication $1.run(LwjglApplication.java:114)
Есть ли способ исправить эту ошибку?
Спасибо за любой ответ
Ответы
Ответ 1
Проблема заключается в том, что вы пытаетесь загрузить PolygonShapes
до того, как загрузилась собственная библиотека для Box2D. Как объясняется здесь, родные библиотеки Box2D загружаются в статический инициализатор класса World
.
Я не уверен, является ли это предполагаемым поведением, но похоже, что крайний регистр был упущен при реорганизации кода Box2D в расширение.
Вы можете обойти это, создав World
или загрузив собственную библиотеку Box2D, прежде чем загружать свои полигоны/тела/что угодно.
Я не совсем уверен, как загружать собственные библиотеки, но простой new World(args)
должен отлично работать.