gpt4 book ai didi

java - Java VM 如何决定 user.dir 系统属性的值?

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:43 26 4
gpt4 key购买 nike

我正在运行一个具有以下目录结构的简单 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 的值应该是多少?

最佳答案

java.lang.System specification the user.dir 定义属性返回当前工作目录(即 JVM 启动时的当前目录):

user.dir User's current working directory

我看不出你的例子有什么矛盾之处。这里唯一不清楚的是属性的名称。我不明白他们为什么选择将“用户”放在那里。

同样,如果您从完全不同的路径执行相同的 Java 程序,您将获得另一条路径作为结果。自己试试看:

 c:
cd c:\
java -cp D:\Projects\Workspace\MyProject\bin Hello

Eclipse 在运行程序之前所做的类似于:

 d:
cd d:\projects\workspace\myproject
java -cp d:\projects\workspace\myproject\bin Hello

关于java - Java VM 如何决定 user.dir 系统属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5003658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com