簡體   English   中英

java.lang.NoSuchMethodError:getPointer

[英]java.lang.NoSuchMethodError: getPointer

我可以在IDE中很好地運行程序,但是只要將其導出為可運行的jar文件(並使其變成胖jar,添加庫和本機等),就可以在IDE中以自己的jar文件將其導出。給出以下錯誤:

Exception in thread "main" java.lang.NoSuchMethodError: getPointer
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at org.lwjgl.Sys$1.run(Sys.java:72)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
    at org.lwjgl.Sys.loadLibrary(Sys.java:81)
    at org.lwjgl.Sys.<clinit>(Sys.java:98)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:128)
    at Joehot200.TerrainDemo.setUpDisplay(TerrainDemo.java:1956)
    at Joehot200.TerrainDemo.startGame(TerrainDemo.java:2029)
    at Joehot200.Main.main(Main.java:55)

我設置的顯示方法是:

private static void setUpDisplay() {
    try {
        DisplayMode displayMode = null;
        DisplayMode[] modes = Display.getAvailableDisplayModes(); //this is line 1956

         for (int i = 0; i < modes.length; i++)
         {
             if (modes[i].isFullscreenCapable())
               {
                    displayMode = modes[i];
               }
         }
         if (displayMode == null){
             displayMode = new DisplayMode(100, 100);
         }
        //Display.setDisplayMode(new DisplayMode(WINDOW_DIMENSIONS[0], WINDOW_DIMENSIONS[1]));
         Display.setDisplayMode(displayMode);
        Display.setResizable(true);
        Display.setTitle("Pirate game");
        //Display.setFullscreen(true);
        Display.create();

    } catch (LWJGLException e) {
        e.printStackTrace();
        cleanUp(true);
    }
}

如何解決愚蠢的錯誤並使之正常工作?

您很可能會缺少本機庫。 您可以這樣設置路徑:

System.setProperty("org.lwjgl.librarypath", new File("pathToNatives").getAbsolutePath());

這里

如果您使用LWJGL隨附的文件夾結構,則必須選擇類似以下內容的正確本機:

        switch(LWJGLUtil.getPlatform())
        {
            case LWJGLUtil.PLATFORM_WINDOWS:
            {
                JGLLib = new File("./native/windows/");
            }
            break;

            case LWJGLUtil.PLATFORM_LINUX:
            {
                JGLLib = new File("./native/linux/");
            }
            break;

            case LWJGLUtil.PLATFORM_MACOSX:
            {
                JGLLib = new File("./native/macosx/");
            }
            break;
        }

        System.setProperty("org.lwjgl.librarypath", JGLLib.getAbsolutePath());

最后:您正在使用Slick2D,所以這可能很有趣( Source ):

我仔細檢查了一下錯誤,發現它一定與其中一個文件比另一個文件舊,然后我才意識到我正在使用光滑的lwjgl jar。 我用網站上的替換它,它解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM