使用新的 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 本机方法的主要内容,如果未能解决你的问题,请参考以下文章
使用不支持我的 JDK 版本 (17) 的 Gradle 6.7.1 的 LibGDX 项目创建工具