Java 为什么选择System.getProperty(“user.name”);无法从命令行运行?

Java 为什么选择System.getProperty(“user.name”);无法从命令行运行?,java,path,filesystems,Java,Path,Filesystems,下面这行代码可以很好地用于Eclipse Path file = Paths.get(System.getProperty("user.home"),"Desktop","Peppe.txt"); 但是,当我试图从终端运行它时,它会返回此错误消息 java.nio.file.NoSuchFileException: /root/Desktop/Peppe.txt 理论上,System.getProperty(“user.name”)应该返回一个与平台无关的根路径位吗?不是吗?您正在以root

下面这行代码可以很好地用于Eclipse

Path file = Paths.get(System.getProperty("user.home"),"Desktop","Peppe.txt");
但是,当我试图从终端运行它时,它会返回此错误消息

java.nio.file.NoSuchFileException: /root/Desktop/Peppe.txt

理论上,
System.getProperty(“user.name”)
应该返回一个与平台无关的根路径位吗?不是吗?

您正在以
root用户身份运行代码,而且root用户很可能没有桌面


我不会假设代码的行为不正确,相反,我会假设您需要理解它的含义。

问题是,在Eclipse中,它可以正常工作,但它不是来自使用同一台计算机的终端。Ubuntu11.10上的Java 7看起来像是您试图在Eclipse和命令行之间以不同的用户身份运行应用程序。您使用root登录或用户登录来运行程序吗?当您这样做时会发生什么:
Java-Duser.home=$home
?我该怎么办?如果我不是以root用户身份运行它,当我试图访问一个文件时,它会显示“拒绝访问”(即使我更改了PosixPermissions,因此添加了OTHERS\u Write实际上是“拒绝访问”错误消息仅在具有与其他文件相同的PosixFilePermissions的特定文件中出现,而其他文件实际上正在工作,但没有任何错误消息。:O奇怪,可能目录没有权限,或者目录是文件,或者文件是目录。root可以阻止自己访问某些内容(即使它可以改变它,如果它想)即使
root
也不能混淆文件和目录(太多)