2014-01-17 21 views
0

之前大家都告诉我,这是一个重复,请听我说......得到一个罐子的可执行文件路径中的Java 7

当你需要从运行罐子里面绝对可执行文件的路径(=路径个体经营)不管当前的工作目录,在旧时代(Java 6的JRE 1.6)的这个使用像一个魅力的工作:

getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

如今在Java 7中(JRE 1.7)这只是返回 “./”。如果你想测试这个,你需要创建一个可运行jar,因为从源代码编译时,你会得到预期的路径。

这让我很生气,因为我一直在寻找一种永恒的解决方案。我采取了硬编码的绝对路径,但显然这意味着罐子不是便携式的。

有谁知道该怎么办?

谢谢!

回答

0

刚刚导出一个旧的Java 6项目,也使用相同的方法来获取执行路径后,偶然发现同样的问题。 这里有一个快速的解决方法(与你的类名或使用“的getClass()”代替“Start.class”):

String path = Start.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
path = new File(rootFolder).getAbsolutePath(); 

最有可能你会最终有一个路径仍与一个周期结束。所以,你可能要修复,使用:

if (path.endsWith(".")) path = path.substring(0, path.length() - 1); 

使用Oracle JRE 7测试在Windows 7的64位和Xubuntu的14.04

+0

对不起都没有机会去尝试。将尽快回复 –

相关问题