调用new World()时出现UnsatisfiedLinkError

时间:2015-12-05 07:10:31

标签: 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;

2 个答案:

答案 0 :(得分:1)

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

这里我建议你:

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

也尝试以这样的静态方式调用它:

static {
    GdxNativesLoader.load();
}

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

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

也尝试:

升级您正在使用的box2d版本

那些是我所有的箭!希望其中一个能够发挥作用

祝你好运!!

答案 1 :(得分:0)

我遇到了同样的问题,正在使用gwt库。从

更新了Maven依赖项工件
gdx-box2d-gwt 

gdx-box2d 

它修正了错误。