我知道捕捉错误不是一个好习惯,但是在这种情况下,做到这一点很重要。我正在尝试运行一个包含游戏一部分的jar,但这给了我一个不满意的链接错误,但这是有趣的部分:
我正在使用此代码:

System.setProperty("org.lwjgl.librarypath", new File("lib/natives").getAbsolutePath());


但是在netbeans中,这给了我这个错误,但是,jar运行了。现在,如果我更改为代码,请执行以下操作:

System.setProperty("org.lwjgl.librarypath", new File("Dist/lib/natives").getAbsolutePath());


现在,它可以在netbeans中运行,但是jar无法运行...而且我不明白!所以,我正在尝试使用try / catch来使用两者,而这就是完整的代码:

try{
    System.setProperty("org.lwjgl.librarypath", new File("lib/natives").getAbsolutePath());
}
catch (UnsatisfiedLinkError e){
    System.setProperty("org.lwjgl.librarypath", new File("dist/lib/natives").getAbsolutePath());
}


当我在netbeans中运行它时,这是第一行的错误,而不是catch部分的错误。这是怎么回事?在此先感谢朋友!

最佳答案

在这样的代码中:

 new File("Dist/lib/natives").getAbsolutePath()


您给出的是相对于JRE“用户”(或工作)目录的路径“ Dist / lib / natives”。相对于系统属性“ user.dir”的值。此属性的值在JVM启动时设置,并且可以根据JVM的启动方式而变化。您应该打印或记录'user.dir'的值,并观察问题中提到的每个启动案例的差异,以了解发生了什么。

System.ou.println(System.getProperty("user.dir"));

关于java - 捕获UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17395883/

10-12 05:01