java - 调用 new World() 时出现 UnsatisfiedLinkError

标签 java libgdx

我的错误:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.UnsatisfiedLinkError: org.jbox2d.common.Timer.now()D
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:130)
Caused by: java.lang.UnsatisfiedLinkError: org.jbox2d.common.Timer.now()D
    at org.jbox2d.common.Timer.now(Native Method)
    at org.jbox2d.common.Timer.reset(Timer.java:35)
    at org.jbox2d.common.Timer.<init>(Timer.java:31)
    at org.jbox2d.dynamics.World.<init>(World.java:587)
    at org.jbox2d.dynamics.World.<init>(World.java:158)
    at org.jbox2d.dynamics.World.<init>(World.java:154)
    at org.jbox2d.dynamics.World.<init>(World.java:145)
    at com.badlogic.gdx.physics.box2d.World.<init>(World.java:61)
    at com.example.blockbunny.states.Play.<init>(Play.java:22)
    at com.example.blockbunny.handlers.GameStateManager.getState(GameStateManager.java:36)
    at com.example.blockbunny.handlers.GameStateManager.pushState(GameStateManager.java:46)
    at com.example.blockbunny.handlers.GameStateManager.<init>(GameStateManager.java:20)
    at com.example.blockbunny.main.Game.create(Game.java:33)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:146)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:123)

当我这样做时会发生这种情况:

world = new World(new Vector2(0, -9.81f), true);

我在网上查了一下,一些解决方案包括使用这个:

import com.badlogic.gdx.utils.GdxNativesLoader;
GdxNativesLoader.load();

但是,我不知道该函数该放在哪里,也不知道它是否有效(我尝试将它放在几个不同的地方)

如何解决这个问题?

我们将不胜感激,谢谢!

根据要求,这是我的导入:

import static com.example.blockbunny.handlers.B2DVars.PPM;

import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;
import com.example.blockbunny.handlers.GameStateManager;
import com.example.blockbunny.main.Game;

最佳答案

我多次使用 Box2d 和 libgdx,但从未遇到过这样的问题:

这是我向您提出的建议:

GdxNativesLoader.load(); 应该放在 create() 方法上,但这似乎不适合你

也尝试以静态方式调用它,如下所示:

static {
    GdxNativesLoader.load();
}

但我认为你的问题是你正在使用的库的扩展 验证您使用的是 gdx-box2d 而不是仅用于 Html 项目的 gdx-box2d-gwt

验证您是否使用正确的(jar 文件)/(扩展库):gdx-box2d.jargdx-box2d-natives.jar(同时验证构建路径)

也尝试一下:

升级您正在使用的 box2d 版本

这就是我所有的箭头!希望其中之一能够发挥作用

祝你好运!!

关于java - 调用 new World() 时出现 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102306/

相关文章:

java - JUnit 报告未显示使用类别和 ANT 时测试的所有类

java - 瓦尔哈拉计划的值(value)类型是什么?

android - 如何在 libgdx 中将 Assets 从 android 链接到桌面?

java - Eclipse LibGdx GPGS

java - 为什么我的 JComboBox 没有在我的绘图上绘制?

java - 从单个线程中的多个 BlockingQueues 中读取

java - libGDX 中对象的速度

java - libGDX 游戏在 iOS 7 上崩溃

java - 如何将十六进制IP字符串转换为IP4点分字符串...

android - 我可以使用 android studio 编写 libgdx 游戏吗?