我正在运行一个简单的 Java 程序,其目录结构如下:
MyProject (A project in my Eclipse IDE)
'-- src
'-- Hello.java
在 Hello.java 中,我正在打印“user.dir”系统属性的值。
System.out.println(System.getProperty("user.dir"));
我的班级的编译文件存储在MyProject\bin
folder.
当我从 Eclipse 运行此类(右键单击源文件并单击“运行方式”->“Java 应用程序”)时,它会打印“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 的值应该是多少?