【问题标题】:How to avoid VS Code warning: "[myfile].java is a non-project file, only syntax errors are reported"如何避免 VS Code 警告:“[myfile].java 是非项目文件,只报告语法错误”
【发布时间】:2020-09-01 17:32:52
【问题描述】:

我正在 Visual Studio Code 的 java 项目中运行构建任务。 “问题”标签中的警告:

[myfile].java 是非项目文件,只报语法错误

它指的是我在包含 main() 的类文件中加载的第一行:

package [the project folder];
import [the project folder].[the file with other classes].*;
  • 我只能通过将文件的文本(代码文本本身)复制到新项目的新 java 文件中的新不相关文件夹中来避免警告。代码本身是正确的并且编译没有错误。实际上,这就是答案,但需要大量手动工作。
  • 当我只是将带有警告消息的项目的java文件复制到一个新文件夹中时,警告仍然出现!!!! (!)
  • 当我只是将整个项目文件夹复制到一个新位置时,错误仍然存​​在,当然。

我猜想将文本复制到具有相同名称和相同文件夹结构的新 java 文件中与复制文件本身不同,因为这些文件可能会被 VS Code 标记,因此即使在文件夹结构中它们也有项目标记被摧毁。也许这支持从恢复的原始文件中恢复项目结构?这可能是这个 Visual Code 警告的问题吗?

我之前检查过其他线程,这只是最后一步。

--> 因此,我清理了 vscode 的 workspaceStorage(在 Windows 上:C:\Users\USER\AppData\Roaming\Code\User\workspaceStorage)并重新启动但没有成功。

【问题讨论】:

    标签: java visual-studio-code package compiler-warnings project-structure


    【解决方案1】:

    尝试清理 Java 语言服务器工作区:

    1. CMD+SHIFT+P(在 WINDOWS 上按 CTRL+SHIFT+P)显示命令面板
    2. 选择“Java:清理 Java 语言服务器工作区”
    3. 重启并删除

    刚刚为我工作。

    【讨论】:

    • 欢迎来到 SO 并感谢您的贡献,但问题本身已经排除了这一点:“我清理了 vscode 的 workspaceStorage(在 Windows 上:C:\Users\ USER\AppData\Roaming\Code\User\workspaceStorage)并重新启动但没有成功。”您已经提供了其他给定链接的答案。它可能仍然可以帮助迷失在链接中的人,但这不是这里问题的答案。
    • 为什么说“3.重启并删除”?我原以为它只是“重启”。
    • 抱歉,“重启并删除”是您选择“Java:清理 Java 语言服务器工作区”时的提示/弹出窗口。认为它会删除缓存并在一个操作中重新启动。我不确定是否像您提到的那样直接清理文件夹...您是否从命令面板执行了 VSCode 命令?
    • 我做了和你一样的,在 vscode 里面,去首选项,清理工作区。那没有帮助。手动清洁工作区也无济于事。虽然一开始看起来很奇怪,但错误是可以重现的。
    【解决方案2】:

    我收到同样的警告仅仅是因为我在同一个 vscode 工作区中有两个 Java (Maven) 项目。将 projectA 移出工作区后,projectB 的警告就消失了。

    WorkspaceRoot
    │   projectA
    └───projectB
    

    我当前的解决方案是为一个工作区创建一个 Java (Maven) 项目,即 每个 vscode 工作区一个 Maven 项目。

    我的猜测是,vscode 将同一工作区中的所有 Java 项目视为一个项目,因此这些项目会相互干扰。

    【讨论】:

    • 你是第一个只删除部分工作区的人,好主意。我接受它而不是我的建议。在解决了两个项目中的错误之后,我可能会做同样的事情,在新工作区中重新打开一个项目(为此,我不在工作区文件夹中)。我不确定解决方案的原因。如果您不介意,请放一张截图和/或工作区的路径,稍微详细一点,或者一个 SO 链接如何完成,这样每个人也可以快速解决问题。查找工作区的相关链接位于问题的底部。
    • 只是为了确保我们谈论的是同一个工作区。您是指github.com/redhat-developer/vscode-java/wiki/… --> github.com/redhat-developer/vscode-java/wiki/… 中的 workspace 目录 还是您在项目文件夹中找到的 working 目录?
    • @Lorenz 我不确定术语。在 vscode 资源管理器中,您可以“将文件夹添加到工作区”。如果在该文件夹中您有两个 Maven 项目,那么它可能会相互干扰。可能的解决方案是为每个文件夹导入一个 maven 项目(进入同一个工作区即可)。
    【解决方案3】:

    这是给不使用 Maven 的人的答案。

    整个问题来自加载的不是直接项目文件夹,而是父文件夹,尽管项目从一开始就在其直接项目文件夹中开发。

    FOLDER1(父)包含

    • FolderA(java文件的直接工程文件夹)
    • FolderB(java文件的直接工程文件夹)

    我已经分别编写了这些项目。但是有一次我在 VS Code 中打开了 FOLDER1。这似乎将 2 个项目合并为一个项目。在此之后,我改回只打开 FolderA/B 并收到问题中报告的警告。

    现在我再次打开了 FOLDER1 并使两个 FolderA/B 项目在没有警告的情况下运行(也许您可能只是注释掉所有内容而不修复任何内容,但这是未经测试的),打开隔离的 FolderA/B 项目也不会引发任何警告。似乎 VS Code 使打开父文件夹成为干扰子项目的新项目的开始。

    我收到警告的原因是最后另一个项目文件夹中的代码错误(不重要,但我忘记在某些 java 文件的开头加载“FolderA”项目所需的本地包) .

    无论我遇到什么错误,警告都令人困惑,因为我只处理与“FolderA”无关且没有代码问题的项目“FolderB”。这导致了奇怪的效果,我在“FolderB”项目中也收到了“FolderA”项目的警告,因为 VS Code 将这两个项目视为一个项目。

    【讨论】:

      【解决方案4】:

      我为此苦苦挣扎了很长时间,但在互联网上没有找到合适的解决方案,但按照以下步骤设法做到了:

      这是我做过的一个简单方法:

      1. 您在左侧窗格中看到的文件夹很少。
      2. 一一右键单击,然后按“将文件夹添加到Java源路径”。

      @UnderBlue592 建议的方法是正确的一种方法,但并没有 100% 地解决我想要的问题。这个扩展的问题实际上是发生了“Red Hat 对 Java(TM) 的语言支持”,它让我们的文件夹远离源路径。

      【讨论】:

        【解决方案5】:

        对我来说,删除 C:\Users\yourHome\AppData\Roaming 路径中​​的代码文件夹即可解决问题。

        【讨论】:

        • 对于某些人来说,这可能是解决方案,因为它是问题底部提到的高频链接的解决方案。就我而言,它无法解决问题。
        • 你想建立一个maven项目吗?你真的删除了代码文件夹吗?因为我以前从未见过这样的解决方案。对我来说,我的 VScode 无法运行 spring boot application.java 但 mvn spring-boot:run 命令有效,而且我有另一台笔记本电脑的 VScode 1.43 版本工作正常,所以我要做的就是完全删除我的 VScode包括 .VScode 和 code 文件夹并安装 VScode 1.43 版本!它有效
        • 我不想构建一个 Maven 项目。不,我没有删除整个 Code 文件夹。我以为你仍然指的是C:\Users\USER\AppData\Roaming\Code\User\workspaceStorage。那么您的答案是新的,我在其他任何地方都没有见过。我无法测试您的答案,让我们等待您的答案投票,看看它是否有效。至于我,我不想降级 vscode 来解决这个错误,应该有更好的方法,删除整个 Code 文件夹对我来说似乎有点过分了。我认为你宁愿只是清理你的workspaceStorage。这是一个已知的选项。
        • 我明白了,降级我的 VSCode 只是因为我仍然使用 Java 8,新的 VSCode 要求使用 Java 11。我认为删除代码文件夹可以解决问题,如果你没有什么可失去的!
        • 您的解决方法也可以在不降级 vscode 的情况下实现,请参阅stackoverflow.com/questions/63043585/…。或者你在 Addition 中安装 Java 11,然后使用设置切换到 Java 8,那么你甚至不需要降级任何东西。除此之外,我猜你的解决方案可能没有与这里的线程连接,因为删除代码文件夹很可能只是清理整个工作区文件夹正在做的事情,这并没有帮助我在这里回答这个问题。跨度>
        【解决方案6】:

        我重命名了包含“[myfile].java 是一个非项目文件,只报告语法错误”的包,它对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-05
          • 2017-04-11
          • 2016-12-25
          • 2021-02-04
          • 1970-01-01
          • 2019-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多