UnsatisfiedLinkError Libgdx桌面

问题描述 投票:5回答:2

我在桌面上遇到LibGDX的问题。尝试启动应用程序时,我始终收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(I)Ljava/nio/ByteBuffer;
at com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(Native Method)
at com.badlogic.gdx.utils.BufferUtils.newUnsafeByteBuffer(BufferUtils.java:288)
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:62)
at com.badlogic.gdx.graphics.glutils.VertexArray.<init>(VertexArray.java:53)
at com.badlogic.gdx.graphics.Mesh.<init>(Mesh.java:148)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:173)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:142)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:121)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.<init>(SpriteBatch.java:115)

我在项目中添加了以下库:

  • gdx.jar
  • gdx-sources.jar
  • gdx-natives.jar
  • gdx-backend-lwjgl.jar
  • gdx-backend-lwjgl-natives.jar

我想念什么吗?

我进行了上下搜索,但是找到的所有内容都是针对Android的,它告诉我将arm文件夹中的.so库添加到我的项目中,但是对于Wintel平台上的桌面项目而言,这对我来说没有任何意义。

java java-native-interface libgdx unsatisfiedlinkerror
2个回答
20
投票

我建议您使用this GUI设置项目。它应为您提供适用于所有平台的有效设置。您也可以使用最新的每晚版本,并检查问题是否仍然存在。问题可能是本地库与其他jar不匹配。

另一个问题可能是您实例化一个SpriteBatch(或其他内部使用SpriteBatch的实例)太早了(在stacktrace中看起来像这样)。例如静态地像这样:

private static SpriteBatch batch = new SpriteBatch();

这将不起作用,因为此时libgdx设置不正确。而是在游戏的create / show方法中创建此类内容。


0
投票

使用以下主要方法主体来启动对象

静态public void main(String [] args)引发异常{// SkeletonViewer.args = args;

    String os = System.getProperty("os.name");
    float dpiScale = 1;
    if (os.contains("Windows")) {
        dpiScale = Toolkit.getDefaultToolkit().
                getScreenResolution() / 96f;
    }
    if (os.contains("OS X")) {
        Object object = Toolkit.getDefaultToolkit().getDesktopProperty(
                "apple.awt.contentScaleFactor");
        if (object instanceof Float && ((Float) object).intValue() >= 2) {
            dpiScale = 2;
        }
    }
    if (dpiScale >= 2.0f) {
        uiScale = 2;
    }

    LwjglApplicationConfiguration.disableAudio = true;
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
    config.width = (int) (800 * uiScale);
    config.height = (int) (600 * uiScale);
    config.title = "Skeleton Viewer";
    config.allowSoftwareMode = true;
    config.samples = 2;
    new LwjglApplication(new SampleApplication(), config);
}
© www.soinside.com 2019 - 2024. All rights reserved.