Java如何为jar文件设置库路径和本机路径

时间:2015-02-20 10:53:01

标签: java lwjgl

如何设置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);

这些都不起作用。有帮助吗?这些文件在路径中,我已经检查了路径是否存在于代码中,并且它们可以做什么,除了我在我眼中的任何东西。

2 个答案:

答案 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"+"\"";