Compiling/running 来自终端的 LWJGL 程序

Compiling/running a LWJGL program from terminal

我正在尝试编译和 运行 一个纯粹来自控制台的 LWJGL 项目,而不使用 Maven/Gradle 或任何 IDE(出于某些原因)。我是 运行ning Mac OS X v10.15.4。该程序似乎可以正常编译,但在 运行 编译它后,我得到以下信息:

[LWJGL] Version: 3.2.3 build 13
[LWJGL]      OS: Mac OS X v10.15.4
[LWJGL]     JRE: 12 x86_64
[LWJGL]     JVM: Java HotSpot(TM) 64-Bit Server VM v12+33 by Oracle Corporation
[LWJGL] Loading JNI library: lwjgl
[LWJGL]     Module: org.lwjgl
[LWJGL]     macos/x64/org/lwjgl/liblwjgl.dylib not found in java.library.path=native
[LWJGL]     liblwjgl.dylib not found in java.library.path
[LWJGL] Failed to load a library. Possible solutions:
    a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
    b) Add the JAR that contains the shared library to the classpath.
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.dylib
    at org.lwjgl.system.Library.loadSystem(Library.java:162)
    at org.lwjgl.system.Library.loadSystem(Library.java:62)
    at org.lwjgl.system.Library.<clinit>(Library.java:50)
    at org.lwjgl.system.MemoryUtil.<clinit>(MemoryUtil.java:97)
    at org.lwjgl.system.Pointer$Default.<clinit>(Pointer.java:67)
    at org.lwjgl.system.Callback.<clinit>(Callback.java:41)
    at HelloWorld.init(HelloWorld.java:37)
    at HelloWorld.run(HelloWorld.java:22)
    at HelloWorld.main(HelloWorld.java:112)

代码与 https://www.lwjgl.org/guide 中的指南代码相同,我使用以下命令进行编译和 运行:

javac -cp .:lib/* HelloWorld.java 
java -cp .:lib/* -Djava.library.path=native/macos HelloWorld

我认为我出错的地方(以及错误消息提示的内容)是我丢失了本机文件或者它们只是设置不正确但是对于我的所有搜索我似乎无法找到一个答案。这是我的目录设置:

lib
| lwjgl.jar
| lwjgl-glfw.jar
| lwjgl-opengl.jar
native
| macos
| | lwjgl-glfw-natives-macos.jar
| | lwjgl-natives-macos.jar
| | lwjgl-opengl-natives-macos.jar
HelloWorld.java
HelloWorld.class

我已经看到 Building and running lwjgl program from terminal 并且似乎没有解决这个问题。我也四处搜索 liblwjgl.dylib 但据我了解,LWJGL 的 SharedLibraryLoader 应该处理这个问题。

解决它的方法似乎是将本机文件放在 lib 文件夹中,然后 运行 如下:

java -cp .:lib/* -XstartOnFirstThread HelloWorld

注意在 MacOSS 上 -XstartOnFirstThread 是必须的,否则程序会立即崩溃。