javac以"not a file"响应,但该文件存在

cvi*_*fli 4 java powershell

当我用javac编译一个Java文件时,它会响应错误not a file(而不是file not found):

在此输入图像描述

所以我尝试在WSL环境中编译它,它编译相同的文件.然后,我意识到这可能是因为我把文件放在OneDrive下,所以我将它移出OneDrive并再次尝试,然后javac工作:

在此输入图像描述

之后,我在Onedrive下创建了一个空的java文件并再次尝试,这也显示not a file错误:

在此输入图像描述

然后,我开始意识到当我在PowerShell中"dir"时,OneDrive下的文件模式包含一个"l"符号,表示"重新分析点".虽然我真的不明白这意味着什么,但我很好奇是否因为l我无法编译java文件.或者是否还有其他潜在问题.

Mon*_*Kin 11

在您发布的第一张图片中,您可以看到:

> dir
Mode     Name
-a---l   helloworld.java
Run Code Online (Sandbox Code Playgroud)

那么,l模式结尾意味着什么helloworld.java不是文件,它是一个符号链接.这javac就是告诉你的.

您在第二个图像中发布的示例有效,因为该图像实际上是一个文件(请参阅模式列说明-a----).

问题是由OneDrive引起的,我们看到的文件实际上并不是文件,而是指向那些文件的链接.要避免此问题,请不要将Java文件放在OneDrive文件夹中.

  • 我有同样的问题,但只在我的一些电脑上。如果在 OneDrive 中禁用 Files On-Demand 设置,它将出现在本地而不是作为链接存储文件。这让您可以直接使用 javac,但这也意味着您所有的 OneDrive 文件都将存储在本地,这会占用大量空间。 (2认同)