我发现在我的 OSX 系统上我有“奇怪”的设置。Java 将我的用户名读取为“root”,而不是我的实际用户名。结果我使用的代码使用 System.getPropery("user.name") 调用。因此,我制作了独立的片段(我将其保存在 test.java 下),它打印 java 系统 user.name 属性和我的 UNIX 用户名环境:
class UserName {
public static void main(String[] args) {
String name;
name = System.getProperty("user.name");
System.out.println("user.name="+name);
name = System.getenv("USER");
System.out.println("USER="+name);
}
}
如果我将它编译为javac test.java然后将它(在我的帐户下,而不是 root 帐户下)作为java UserName运行,它会打印以下内容:
user.name=root
USER=vk
我的问题是 java 在哪里/如何设置 user.name 以及为什么将它设置为 root 而不是我的实际 UNIX 名称。我不是 Java 专家,也不真正了解 System.getProperty API 的内部结构。
第二个问题是可以在 UNIX 环境中以某种方式更改此设置,以使其正确读取我的用户名。
最后可能是我的环境或java配置被破坏,并且有一些隐藏文件(属性)应该被修复。