关于java:为什么System.getProperty(“home.dir”)返回null

Why System.getProperty(“home.dir”) returns null

本问题已经有最佳答案,请猛点这里访问。

我无法弄清楚为什么System.getProperty("home.dir")返回null而不是当前工作目录。

我在Ubuntu 16.04上使用Eclipse Mars2.0 IDE。 我想,这与我使用的IDE或操作系统版本无关。

1
2
3
4
5
6
7
8
9
package test;

public class testing {
    public static void main (String args[])
    {
        System.out.println(System.getProperty("home.dir"));
    }

}

我希望得到这个代码的回报,如/ home / [user] / Workspace / test


Home.dir不是这里指定的java属性:

https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

如果通过工作目录表示用户工作目录,那么user.home应该可以工作。

例:

1
    System.out.println(System.getProperty("user.home"));

输出:

1
C:\Users\User

如果你的意思是.jars工作目录,那么我不相信这样的属性存在。
而是使用:

1
    your_class.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 

这将返回一个字符串,指定jar当前所在的位置。

例:

1
    System.out.println(new File(**TestLighting.class.getProtectionDomain().getCodeSource().getLocation().getPath()**));

(new File()是为了得到正确的格式,它是/ C:/ ...)

输出:

1
2
C:\Users\User\Documents\Java
etbeans\Engine\build\test\classes

(这是运行jar的路径)

如果home.dir是系统环境变量,那么你将使用System.getenv()