使用新的libgdx gradle项目找不到PolygonShape Native Method

时间:2014-04-18 21:42:34

标签: java gradle libgdx android-studio box2d

我在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时,我收到以下错误:

  

线程“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(母语   方法)at   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)at   com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)     在   com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run(LwjglApplication.java:114)

有没有办法解决这个错误? 感谢您的回复

1 个答案:

答案 0 :(得分:14)

问题是您在加载Box2D的本机库之前尝试加载PolygonShapes。正如here所解释的那样,Box2D本机库被加载到World类的静态初始化器中。

我不确定这是否是预期的行为,但它似乎是将Box2D代码重构为扩展时遗漏的边缘情况。

您可以通过创建World或加载Box2D本机库来解决此问题,然后再加载多边形/正文/其他内容。

我不确定如何加载本机库,但是简单的new World(args)应该可以。