如何获得在Java中双击或执行的正确路径?

时间:2012-02-16 08:08:20

标签: java windows-7 jvm

我的Java jar安装在c:\program files<i do not know>\i do not know\here.jar中。当用户执行我的应用程序时。

我总是得到c:\ uesrs \\ here.jar并且失败了。

String Windows7HomeEditionProgramFileDirectroyStruct = System.getProperty("user.dir");

如何获得双击或执行的正确路径?

详细信息(测试了两个答案,但没有说明jar的位置):

尝试1)

new File(".").getAbsolutePath();
or

new File(".").getCanonicalPath();

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1
\dist\JavaApplication1.jar"
C:\Users\sun\.

尝试2)

ClassLoader.getSystemClassLoader().getResource(".").getPath();

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1
\dist\JavaApplication1.jar"
Exception in thread "main" java.lang.NullPointerException
        at javaapplication1.JavaApplication1.main(JavaApplication1.java:18)

跟进:

String test = JavaApplication1.class.getProtectionDomain().getCodeSource().getLocation().getPath();

C:\>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1\dist\Jav
aApplication1.jar"
/C:/Users/sun/Documents/NetBeansProjects/JavaApplication1/dist/JavaApplication1.
jar

3 个答案:

答案 0 :(得分:3)

您可以获取当前目录:

String path = new File(".").getAbsolutePath();

使用“user.dir”获取的是用户目录。

答案 1 :(得分:3)

使用user.dir将始终为您提供Windows中的用户目录。

试试这个:

ClassLoader.getSystemClassLoader().getResource(".").getPath();

答案 2 :(得分:2)

“user.dir”系统属性将返回JAR文件的工作目录。 Binyamin的回答也是如此。

您正在查找包含正在执行的JAR文件的目录。在this thread中提出了类似的问题,答案可能对您有帮助。