1

我目前正在开发基于 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 not found),但由于某种原因 picks jinput-linux64,但 jinput 被添加为库并位于natives文件夹中。

我做错了什么还是有更好的方法来有效地整体分发我的游戏?

谢谢 !

4

1 回答 1

0

在你的发行版中放置原生库有什么问题?你不能依赖你的听众来拥有你的应用程序需要的库。这是我如何分发我用 slick 制作的东西的方式:

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。

于 2012-06-08T13:01:04.643 回答