不满意 Link 尝试在 Eclipse 中使用 LWJGL 2 时出错
Unsatisfied Link Error when trying to use LWJGL 2 with Eclipse
我在使用 Eclipse、Java 15 和 LWJGL 2 this tutorial 之后使用 LWJGL 创建一个 Java 应用程序。但是,我不断收到此错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/home/zixuan/workspace/GameEngine/lib/natives/liblwjgl64.so:
/home/zixuan/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.linux.x86_64_15.0.2.v20210201-0955/jre/lib/libjawt.so:
version `SUNWprivate_1.1' not found
(required by /home/zixuan/workspace/GameEngine/lib/natives/liblwjgl64.so)
这是我当前的构建路径组织:
我还添加了本地库:
目前我的文件夹是这样的:
-GameEngine
-src
[sourcecode]
-bin
[bins]
-lib
-jars
-lwjgl.jar
-lwjgl_util.jar
-slick-util.jar
-natives
-libjinput-linux64.so
-libjinput-linux.so
-liblwjgl64.so
-liblwjgl.so
-libopenal64.so
-libopenal.so
我尝试了从更改系统库到重新安装 Eclipse 的所有方法,但没有成功。我该如何解决这个问题?
您使用的是 非常 非常 旧的和过时的 LWJGL 版本,即版本 2,以及更现代的 Java/JRE Eclipse 附带的版本 15。
当您使用明确的旧 Java/JRE 版本时,最好是 OpenJDK 8,因为它 guaranteed/tested 可以与 LWJGL 2 一起使用,因此可以解决您的问题。因此,下载 OpenJDK 8 并进行说明Eclipse 将其用于 运行 您的应用程序。
很可能 非常 LWJGL 2 根本无法与任何高于 8 的 Java/JRE 版本一起使用,因为这是 last 版本针对 last LWJGL 2 发布版本进行了测试。虽然旧的 Java 代码确实应该适用于更新的 JRE/Java 版本,但如果使用本机代码,这个承诺就会失效,LWJGL 2 包含 很多 为了与 JRE 互操作,尤其是它的 JAWT/AWT 库。
因此,在时间轴上添加几个日期,以了解您正在做的事情:
- Java8 发布日期:2014 年 3 月
- 您正在观看的 YT 教程发布日期:2014 年 7 月
- 最后一个 LWJGL 2 版本 (2.9.3):2015 年 1 月
...
- Java15 发布日期:2020 年 9 月
请记住,教程和 software/library 版本 do 会过时并最终因与 advancing/newer 不兼容而停止工作 运行time 及其 provided/dependent 库。
再次声明:LWJGL 2 完全 生命终结已经七年多了,不会 improved/fixed 或以其他方式继续工作。下一个版本是 LWJGL 3(第一个版本于 2016 年发布),它正在积极开发中,甚至可以与最新的 JRE/Java 版本(OpenJDK 19 抢先体验版)一起使用。
我在使用 Eclipse、Java 15 和 LWJGL 2 this tutorial 之后使用 LWJGL 创建一个 Java 应用程序。但是,我不断收到此错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/home/zixuan/workspace/GameEngine/lib/natives/liblwjgl64.so:
/home/zixuan/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.linux.x86_64_15.0.2.v20210201-0955/jre/lib/libjawt.so:
version `SUNWprivate_1.1' not found
(required by /home/zixuan/workspace/GameEngine/lib/natives/liblwjgl64.so)
这是我当前的构建路径组织:
我还添加了本地库:
目前我的文件夹是这样的:
-GameEngine
-src
[sourcecode]
-bin
[bins]
-lib
-jars
-lwjgl.jar
-lwjgl_util.jar
-slick-util.jar
-natives
-libjinput-linux64.so
-libjinput-linux.so
-liblwjgl64.so
-liblwjgl.so
-libopenal64.so
-libopenal.so
我尝试了从更改系统库到重新安装 Eclipse 的所有方法,但没有成功。我该如何解决这个问题?
您使用的是 非常 非常 旧的和过时的 LWJGL 版本,即版本 2,以及更现代的 Java/JRE Eclipse 附带的版本 15。
当您使用明确的旧 Java/JRE 版本时,最好是 OpenJDK 8,因为它 guaranteed/tested 可以与 LWJGL 2 一起使用,因此可以解决您的问题。因此,下载 OpenJDK 8 并进行说明Eclipse 将其用于 运行 您的应用程序。
很可能 非常 LWJGL 2 根本无法与任何高于 8 的 Java/JRE 版本一起使用,因为这是 last 版本针对 last LWJGL 2 发布版本进行了测试。虽然旧的 Java 代码确实应该适用于更新的 JRE/Java 版本,但如果使用本机代码,这个承诺就会失效,LWJGL 2 包含 很多 为了与 JRE 互操作,尤其是它的 JAWT/AWT 库。
因此,在时间轴上添加几个日期,以了解您正在做的事情:
- Java8 发布日期:2014 年 3 月
- 您正在观看的 YT 教程发布日期:2014 年 7 月
- 最后一个 LWJGL 2 版本 (2.9.3):2015 年 1 月 ...
- Java15 发布日期:2020 年 9 月
请记住,教程和 software/library 版本 do 会过时并最终因与 advancing/newer 不兼容而停止工作 运行time 及其 provided/dependent 库。
再次声明:LWJGL 2 完全 生命终结已经七年多了,不会 improved/fixed 或以其他方式继续工作。下一个版本是 LWJGL 3(第一个版本于 2016 年发布),它正在积极开发中,甚至可以与最新的 JRE/Java 版本(OpenJDK 19 抢先体验版)一起使用。