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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

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

 > dir Mode Name -a---l helloworld.java 

那么,在模式结束时l的意思是helloworld.java不是文件,它是一个符号链接。 这就是javac告诉你的。

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

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