使用新的 libgdx gradle 项目未找到 PolygonShape 本机方法

Posted

技术标签:

【中文标题】使用新的 libgdx gradle 项目未找到 PolygonShape 本机方法【英文标题】:PolygonShape Native Method not found using new libgdx gradle project 【发布时间】:2014-06-03 11:28:37 【问题描述】:

我在 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 在 com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120) 引起:java.lang.UnsatisfiedLinkError: com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape()J 在 com.badlogic.gdx.physics.box2d.PolygonShape.newPolygonShape(本机 方法)在 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)

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

【问题讨论】:

你用的是什么IDE? 另外,这与 box2d 无关,您可能应该取消标记。 我用的是AndroidStudio金丝雀频道,最新更新0.5.5 我也有这个问题,使用 Eclipse 我在这里的问题报告中引用了这个问题:github.com/libgdx/libgdx/issues/1730 【参考方案1】:

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

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

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

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

【讨论】:

谢谢,我在主 .java 文件中添加了new World(new Vector2(0f,0f), false),效果很好

以上是关于使用新的 libgdx gradle 项目未找到 PolygonShape 本机方法的主要内容,如果未能解决你的问题,请参考以下文章

未找到 ID 为“gwt”的插件

使用不支持我的 JDK 版本 (17) 的 Gradle 6.7.1 的 LibGDX 项目创建工具

错误:(2, 0) 未找到 ID 为“jetty”的插件

将 libgdx 项目导入 Eclipse 时出现 Gradle 错误

为 libgdx 构建新 Gradle 项目模型时出错

开源java游戏框架libgdx专题-03-项目开发与调试