我有一个基于 java 的应用程序启动器,它使用ProcessBuilder
(也尝试Runtime.getRuntime().exec(new String[]{}
过)通过命令启动另一个 java 应用程序。
当我手动运行命令时,它可以正常工作。游戏启动,没有错误。
java -jar -Djava.library.path="./lib/natives" mygame.jar
当从启动器运行相同的命令(使用绝对路径)时:
ProcessBuilder pb = new ProcessBuilder(
"java",
"-jar",
"-Djava.library.path=\"" +nativesDirectory.getAbsolutePath() + "\"",
applicationJar.getAbsolutePath());
pb.redirectErrorStream(true);
pb.directory(applicationDirectory);
我看到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
我尝试了多种变体,但从 java 启动器运行时,该命令似乎永远不会正确设置库路径。
还有什么我可以尝试的吗?为什么该命令对我有用,但对启动器不起作用?我已经尝试过 ProcessBuilder,因为我担心文件路径中的空格可能会出现问题(尽管它周围有引号)
有没有更好的方法让我的应用程序指示/发现库/本机文件的位置,避免始终传递参数?