为什么System.getProperty(“home.dir”)返回null

时间:2016-09-04 05:45:04

标签: java

我无法弄清楚System.getProperty(“home.dir”)返回null而不是当前工作目录的原因。

我在Ubuntu 16.04上使用Eclipse Mars2.0 IDE。我想,这对我使用的IDE或操作系统版本几乎不重要。

package test;

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

}

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

1 个答案:

答案 0 :(得分:1)

Home.dir不是此处指定的java属性:

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

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

示例:

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

输出:

C:\Users\User

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

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

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

示例:

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

(新的File()是获取正确的格式,它是/ C:/ ...)

输出:

C:\Users\User\Documents\Java\Netbeans\Engine\build\test\classes

(这是运行jar的路径)

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