【发布时间】:2011-02-15 12:30:44
【问题描述】:
我正在运行一个具有以下目录结构的简单 Java 程序:
MyProject (A project in my Eclipse IDE)
'-- src
'-- Hello.java
在 Hello.java 中,我正在打印“user.dir”系统属性的值。
System.out.println(System.getProperty("user.dir"));
为我的班级编译的文件存储在MyProject\bin 文件夹中。
当我从 Eclipse 运行这个类时(右键单击源文件并单击 Run As->Java Application),它会打印到“MyProject”文件夹的路径,即控制台窗口中的D:\Projects\Workspace\MyProject。
然后我使用命令窗口运行相同的程序。这是我在窗口中输入的内容:
D:\Projects\Workspace\MyProject\bin>java Hello
控制台输出为:D:\Projects\Workspace\MyProject\bin
bin 已添加到 user.dir 的先前值。
进一步,为了检查更多,我这次从命令窗口的不同文件夹中执行了 Java 命令:
D:\Projects\Workspace\MyProject>java -classpath D:\Projects\Workspace\MyProject\bin Hello
这次命令窗口的输出是:D:\Projects\Workspace\MyProject
当我在命令窗口中更改文件夹时,此值会发生变化,并且当我从 Eclipse 运行程序时,user.dir 的值是项目文件夹。所以我想了解,推导'user.dir'值的基础是什么? JVM如何决定,user.dir的值应该是什么?
【问题讨论】: