如何设置jar文件的库路径和本机路径?我一直在使用jarsplice / jarmatey,但我不想再这样了。我试过了
System.setProperty("java.library.path", gameFolder+"/lib/jars" + File.separator);
System.setProperty("org.lwjgl.librarypath", gameFolder+"/lib/natives" + File.separator);
游戏目录所在的游戏目录所在的jar网站也是
System.setProperty("java.library.path", "/lib/jars" + File.separator);
System.setProperty("org.lwjgl.librarypath", "/lib/natives" + File.separator);
和两个没有文件分隔符的那些和那些都不起作用。我也尝试过,因为当我的游戏被启动器运行时,它会执行cmd行来运行它,将-D ...添加到cmd参数中,如下所示:
String cmd = "java -jar "+gameFolder+"/progame.jar -Djava.library.path=/lib/jars -Dorg.lwjgl.librarypath=/lib/natives";
Runtime.getRuntime().exec(cmd);
与
相同String cmd = "java -jar "+gameFolder+"/progame.jar -Djava.library.path="+gameFolder+"/lib/jars -Dorg.lwjgl.librarypath="+gameFolder+"/lib/natives";
Runtime.getRuntime().exec(cmd);
这些都不起作用。有帮助吗?这些文件在路径中,我已经检查了路径是否存在于代码中,并且它们可以做什么,除了我在我眼中的任何东西。
答案 0 :(得分:1)
这就是我在环境之外加载.jar的方法
public static void load()
{
String fileNatives = OperatingSystem.getOSforLWJGLNatives();
System.setProperty("org.lwjgl.librarypath", System.getProperty("user.dir") + File.separator + "native" + File.separator + fileNatives);
}
用于检查用户所使用的操作系统
class OperatingSystem {
private static String system = System.getProperty("os.name").toLowerCase();
public static String getOSforLWJGLNatives()
{
if(system.startsWith("win"))
{
return "windows";
}
if(system.startsWith("mac"))
{
return "macosx";
}
if(system.startsWith("lin"))
{
return "linux";
}
if(system.startsWith("sol"))
{
return "solaris";
}
return "unknown";
}
}
答案 1 :(得分:0)
您是否检查过您的游戏文件夹路径是否包含空格字符?如果是这样你应该用双引号括起来,如
String cmd = "java -jar " +" \"" +gameFolder+"/progame.jar" +"\"" +" -Djava.library.path="+"\"" +gameFolder+"/lib/jars" +"\"" + " -Dorg.lwjgl.librarypath="+"\"" +gameFolder+"/lib/natives"+"\"";