我目前正在开发一款基于 Slick2D 的游戏,但我遇到了一个问题。
当我尝试运行我的游戏(无论是从dist还是ide)时,我收到以下错误:
java.lang.UnsatisfiedLinkError: no jinput-linux64 in java.library.path
我的目录结构如下:
./lib
包含库
的所有.jar ./natives
包含.dll、.so 和 .jnilib
如果我转到项目选项,并将-Djava.library.path=./natives
添加到 VM 选项,它会正常工作。但在这种情况下,我需要将所有本机库放在 dist 的根文件夹中。所以我想为所有本地人提供一个单独的文件夹,所以我在 main 的第一行是这样的:
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + "/natives");
但是由于某种原因,这不会给出标准的链接错误(例如找不到 lwjgl),但由于某种原因选择了jinput-linux64
,但 jinput 被添加为库并且位于natives
文件夹中。
我做错了什么吗,或者是否有更好的方法来有效地整体分发我的游戏?
谢谢!
原生库放在发行版中有什么问题?您不能依赖受众来拥有应用程序所需的库。以下是我如何分发我用光滑的东西:
MyFancyGame (Top directory)
-- libraries (mine and slick and lwjgl jars here)
-- lwjgl
-- native (dlls and so files go in here)
在顶部目录中,我包含一个shell脚本和一个包含一行的批处理文件:
java -ea -Djava.library.path="libraries/lwjgl/native/" -cp "libraries/*" com.MyGame.Main
这适用于我部署的每台计算机,只要它们安装了 java。