【问题标题】:Running LWJGL application within Intellij Idea在 Intellij Idea 中运行 LWJGL 应用程序
【发布时间】:2023-03-07 08:21:01
【问题描述】:

我正在尝试开发一个在 Intellij Idea 14.0.1 中实现 Gradle 的程序

Google 上的所有建议都说首先声明对 natives 文件夹的依赖,然后使用 -Djava.library.path="pathtonatives" 运行它

我正在做这一切,但是当您尝试启动应用程序时它仍然失败并出现 UnsatisfiedLinkError。

    "C:\Program Files\Java\jdk1.7.0_40\bin\java" -Djava.library.path=D:\projects\ProBenders\build\natives\windows -Didea.launcher.port=7533 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.0.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.7.0_40\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jfxrt.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\zipfs.jar;D:\projects\ProBenders\build\classes\main;D:\projects\ProBenders\build\resources\main;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.8.2\e84213855756bd60de3001eec7566714bef525a\lwjgl-2.8.2.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.8.2\c43060be41ba6356b5647fcd9fbe59aaf757db86\lwjgl-platform-2.8.2-natives-linux.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.8.2\a7bc7478a060b8156f68a0ef50f509bdd8aab37e\lwjgl-platform-2.8.2-natives-osx.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Users\Theresa\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.8.2\eb58b36399ec1a0824f954175003b5b3ab0f191e\lwjgl-platform-2.8.2-natives-windows.jar;D:\projects\ProBenders\build\natives\windows\lwjgl-2.8.2.jar;D:\projects\ProBenders\build\natives\windows\jinput-2.0.5.jar;D:\projects\ProBenders\build\natives\windows\jutils-1.0.0.jar;D:\projects\ProBenders\build\natives\windows\lwjgl-platform-2.8.2-natives-osx.jar;D:\projects\ProBenders\build\natives\windows\jinput-platform-2.0.5-natives-osx.jar;D:\projects\ProBenders\build\natives\windows\lwjgl-platform-2.8.2-natives-linux.jar;D:\projects\ProBenders\build\natives\windows\jinput-platform-2.0.5-natives-linux.jar;D:\projects\ProBenders\build\natives\windows\lwjgl-platform-2.8.2-natives-windows.jar;D:\projects\ProBenders\build\natives\windows\jinput-platform-2.0.5-natives-windows.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.0.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.github.theresajayne.probenders.ProBenders
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1087)
    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 com.github.theresajayne.probenders.ProBenders.start(ProBenders.java:17)
    at com.github.theresajayne.probenders.ProBenders.main(ProBenders.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 1

该文件夹是使用下面的闭包从 gradle 准备的

    task copyNativesWindows(type: Copy) {
    from configurations.compile.files {
        it instanceof ExternalModuleDependency && it.artifacts.every { it.classifier == 'natives-windows' }
    }
    into "$buildDir/natives/windows"
}

文件夹中的文件是

jinput-2.0.5.jar
jinput-platform-2.0.5-natives-windows.jar
jutils-1.0.0.jar
lwjgl-2.8.2.jar
lwjgl-platform-2.8.2-natives-windows.jar

那么为什么它只是不起作用?

【问题讨论】:

    标签: intellij-idea gradle lwjgl


    【解决方案1】:

    OK 看起来 -Djava.library.path 的工作方式有点问题。

    如果你从 Maven 中提取,你会得到一个 lwjgl-platform-2.8.2-natives-windows.jar 这个文件包含 DLL 所以你必须将 dll 提取到一个文件夹中并将库路径指向该文件夹。

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2023-03-24
      • 2016-07-12
      • 2019-05-09
      • 1970-01-01
      相关资源
      最近更新 更多