我的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
答案 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中提出了类似的问题,答案可能对您有帮助。