【问题标题】:Getting 'java.lang.UnsatisfiedLinkError': no lwjgl in java.library.path获取“java.lang.UnsatisfiedLinkError”:java.library.path 中没有 lwjgl
【发布时间】:2013-10-21 02:44:29
【问题描述】:

请注意,这与 this question 不同,因为它不处理链接,因为它不是询问如何通过 CLI 链接它,而是询问 Eclipse 中的 GUI。

我一直在尝试使用 LWJGL 编写一个简单的程序。当我将库添加到 Eclipse(Windows 7 64 位上的 Kepler 4.3.1)并编写程序时,它不会在使用 LWJGL 的东西下显示红色波浪线。但是,尝试运行它会给我以下堆栈跟踪:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at org.lwjgl.Sys$1.run(Sys.java:73)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
    at org.lwjgl.Sys.loadLibrary(Sys.java:95)
    at org.lwjgl.Sys.<clinit>(Sys.java:112)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
    at DisplayExample.start(DisplayExample.java:8)
    at DisplayExample.main(DisplayExample.java:23)

(是的,这是他们首先给出的示例,但我想运行它以确保所有内容都已正确安装)

我的问题是,我该如何解决这个错误?请注意,即使在 Eclipse 中运行,它仍然会失败。如果我运行其他不使用 LWJGL 的东西,它也可以工作。我刚刚从互联网上下载了它——它只有一个版本,所以我认为它是正确的。据我所知,其他提问者都没有和我一样的错误 - 但如果你能指出一些信息性问题也会有帮助。

【问题讨论】:

  • 我想你已经看过这个SO Question?
  • @S.R.I 刚才我自己想通了……不看教程我觉得很愚蠢。谢谢,不过
  • 别担心,我们都有自己的愚蠢时刻。 :-)

标签: java eclipse lwjgl


【解决方案1】:

您没有在 LWJGL 应用程序中设置原生代码。

这是怎么做的:

  1. 转到包含名为“jar”、“res”、“doc”和“native”的文件夹的 LWJGL 文件夹。您需要进入 Eclipse(假设您使用 eclipse),在屏幕左侧的 Project Explorer 中打开您的项目。
  2. 右击你项目的“JRE System Library”,点击“Build Path”->“Configure Build Path”。
  3. 通过单击 JRE System Library 下拉菜单中的“Native library location”,将 LWJGL 本机库包含到您的项目中。
  4. 点击“编辑...”,这是该常规区域中唯一可点击的按钮。
  5. 会弹出一个文件浏览器。导航到 LWJGL 本机文件夹的位置(如果您使用的是 Windows,则该位置应类似于“C:\Users\YOURUSERNAMEHERE\Desktop\Java\eclipse\lwjgl-2.9.0\native”)并包含名为 [你的操作系统在这里]。

希望这有帮助:)

【讨论】:

  • 接受你的答案而不是我的答案,因为你的答案更丰富。
  • 这为我解决了这个问题。我试图从 Eclipse 编译 Minecraft。 -- 它有它自己的 lwjgl 库/本机,但这不起作用 -- 看起来它没有 DirectX dll。 -- 我刚刚下载了最新的一个并将其解压到我的c:\Program Files\java\jre7\lib\lwjgl-2.9.1 并按照上述说明进行操作,效果很好。谢谢!
  • 对于 IntelliJ 用户,右键单击“外部库”下的“lwjgl.jar”,单击“打开库设置”->“模块”。选择“lwjgl.jar”,单击右侧窗格中的“编辑”按钮[它看起来像一支铅笔]。在新窗口中单击“添加”按钮,然后在“lwjgl”安装位置的“native”文件夹/目录中选择适用于您操作系统的软件包(例如 /native/windows/lwjgl.dll)。跨度>
【解决方案2】:

我按照教程 here 进行操作,看起来我没有执行 添加本地人 步骤,或者我做错了。

按照该链接中的说明进行操作,问题应该得到解决:

这是通过单击 lwjgl.jar 文件旁边的小箭头以显示下拉列表来完成的。双击“本机库位置”并选择包含您操作系统的本机文件的文件夹,然后单击“确定”。它们位于包含在 LWJGL 下载包中的 natives 文件夹中(例如,在 Windows 上,您将指向包含 *.dll 文件的 natives\windows 文件夹,在 Mac 上,您将指向 natives/macosx 文件夹,在 Linux 上你会指向 natives/linux 文件夹)。

【讨论】:

    【解决方案3】:

    如果你尝试运行这段代码:

    public static void main(String... args){
        System.out.println(System.getProperty("java.library.path"));
    }
    

    你应该得到这样的输出: /Users/yourName/.sdkman/candidates/java/8.0.252.j9-adpt/jre/lib/compressedrefs:/Users/yourName/.sdkman/candidates/java/8.0.252.j9-adpt/jre/lib: /usr/lib

    因此,您只需下载 LWJGL 库并将位于“...native/yourOSname”的文件复制到此文件夹之一

    这对我来说很好!

    【讨论】:

      【解决方案4】:

      我通过将 lwjgl.64.dll 文件添加到 jdk-14.0.1 bin 文件夹解决了这个问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多