当我用javac编译一个Java文件时,它会回复错误not a file
(而不是file not found
):
所以我尝试在WSL环境中编译它,它编译同样的文件。然后,我意识到这可能是因为我把文件放在OneDrive下,所以我将它移出OneDrive并再次尝试,然后javac
工作:
之后,我在Onedrive下创建了一个空的java文件并再次尝试,这也显示not a file
错误:
然后,我开始意识到当我在PowerShell中“dir”时,OneDrive下的文件模式包含一个“l”符号,表示“重新分析点”。虽然我真的不明白这意味着什么,但我很好奇是因为l
我无法编译java文件。或者是否还有其他潜在问题。
答案 0 :(得分:9)
在您发布的第一张图片中,您可以看到:
> dir
Mode Name
-a---l helloworld.java
那么,模式结尾的l
意味着helloworld.java
不是文件,它是符号链接。这就是javac
告诉你的内容。
您在第二张图片中发布的示例有效,因为该图片实际上是一个文件(请参阅“模式”列中的-a----
)。
问题是由OneDrive引起的,我们认为文件实际上并不是文件,而是指向这些文件的链接。为避免此问题,请不要将您的java文件放在OneDrive文件夹中。