我无法弄清楚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
答案 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()