不满意 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 抢先体验版)一起使用。