使用新的libgdx gradle项目时找不到PolygonShape本地方法

11

我在Android Studio中有一个使用Gradle的LibGDX项目。

它一直运作得很好,但由于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时,我会遇到以下错误:

Exception in thread "LWJGL Application" 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) Caused by: java.lang.UnsatisfiedLinkError: com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape()J at com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape(Native Method) at com.badlogic.gdx.physics.box2d.PolygonShape.(PolygonShape.java:29) at com.marclabsoftware.app.utilities.BodyEditorLoader.(BodyEditorLoader.java:34) at com.marclabsoftware.app.utilities.Utilities.init(Utilities.java:81) at com.marclabsoftware.app.App.create(App.java:50) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

有没有办法修复这个错误? 谢谢任何回复。


你使用的是哪个集成开发环境(IDE)? - Anubian Noob
此外,这与box2d无关,您可能应该取消标记。 - Anubian Noob
我正在使用AndroidStudio的金丝雀渠道,最新更新版本为0.5.5。 - LaboDJ
我也遇到了这个问题,使用Eclipse。 - Nora Powers
我在这里的问题报告中引用了这个问题:https://github.com/libgdx/libgdx/issues/1730 - Nora Powers
1个回答

15
问题在于您尝试在加载Box2D原生库之前加载。如此处所述,Box2D原生库在类的静态初始化器中加载。
我不确定这是否是预期行为,但似乎在将Box2D代码重构为扩展时忽略了这种情况。
要解决此问题,可以通过创建一个或在加载多边形/物体等之前加载Box2D原生库来解决。
我不确定如何加载原生库,但简单的应该就可以了。

谢谢,我在主要的.java文件中添加了new World(new Vector2(0f,0f), false),它运行良好。 - LaboDJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接