Visual Studio Code无法识别Java项目。

14

VS Code无法识别我的Java项目。该项目是Minecraft模组的模板代码,可以在这里找到。我已经安装了以下插件:

  • "Debugger for Java"
  • "Java Extension Pack"
  • "Language Support for Java by Redhat"
  • "Java Test Runner"
  • "Project Manager for Java"

我还遇到与gradle相关的错误。

Could not run phased build action using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-7.0.2-bin.zip'.
java.io.StreamCorruptedException: invalid type code: 00
invalid type code: 00

以下是我的settings.json文件

{
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    },
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "java.configuration.updateBuildConfiguration": "interactive",
    "java.home": "/usr/lib/jvm/java-16-openjdk-amd64",
    "java.configuration.runtimes": [
        {
          "name": "JavaSE-1.8",
          "path": "/usr/lib/jvm/java-8-openjdk-amd64",
          "default": true
        },
    ]
}

我的Java文件没有代码自动补全功能。之前它是可以工作的,在Visual Studio右下角显示了我使用的Java版本,但现在只显示Java。我猜测这是因为Gradle存在问题,无法确定我的Java版本。谢谢您的时间。

更新: 这似乎可以让我得到自动补全,但我仍然会遇到上面提到的与Gradle相关的错误。

{
    "files.exclude": {
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    },
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "java.configuration.updateBuildConfiguration": "interactive",
    "java.home": "/usr/lib/jvm/java-16-openjdk-amd64",
    "java.configuration.runtimes": [
        {
          "name": "JavaSE-1.8",
          "path": "/usr/lib/jvm/java-8-openjdk-amd64",
          "default": true
        },
        {
            "name": "JavaSE-16",
            "path": "/usr/lib/jvm/java-16-openjdk-amd64",
        },
    ]
}

1
VS Code 的最新更新会要求运行/编译项目文件以确保您信任该项目。如果您选择不信任该项目,则它将无法自动运行/编译文件。详见 https://code.visualstudio.com/docs/editor/workspace-trust。 - Sahin
是的,我收到了一个弹窗并检查过了,是的,我信任这些作者,但我仍然遇到了Gradle错误,VSCode无法找到我的Java项目。 - Lead Vaxeral
@LeadVaxeral,您使用的Java版本和gradle版本是什么? - Zack
听起来版本不匹配。 - Zack
https://github.com/redhat-developer/vscode-java/issues/1594 - Zack
显示剩余2条评论
4个回答

10

在命令面板上运行Java: Clean Java Language Server Workspace

  • 在我的情况下,我没有像.project./settings/...files这样的设置文件。

为什么这个有效 - VS Code(Java扩展)需要提到的设置文件吗? - ryanwebjackson

1
如果有人遇到和我一样的问题,请确保你的settings.json文件看起来和我的类似,包括java 1.8运行配置和java 11+运行配置,与指定的主目录相同。这应该可以解决Java语言级别的问题。Gradle错误可以忽略,但必须使用gradle runClient而不是vscode提供的运行配置。祝愉快的修改:D

2
Java扩展需要JDK11或更高版本的支持,因此如果您将jdk1.8设置为java.home,则该扩展将无法正常工作。 - Molly Wang-MSFT
但是我从未说过要那样做,我说的是设置一个Java 11+的运行配置,其路径与主路径相同@MollyWang。就像我在第二个JSON文件中发布的那样。 - Lead Vaxeral
1
但我想澄清已经可以了。谢谢@MollyWang。 - Lead Vaxeral
什么鬼啊,伙计。 - Mustafa
抱歉,我有点粗鲁。我不是故意那样表现的。 - Lead Vaxeral

0

对我来说仍然没有喜悦。

使用Mac OS Ventura 13.2.1,Java 11(用于VSCode),但使用Java 8构建,并使用复杂的Gradle脚本。

Version: 1.76.2 (Universal)
Commit: ee2b180d582a7f601fa6ecfdad8d9fd269ab1884
Date: 2023-03-14T17:54:09.061Z
Electron: 19.1.11
Chromium: 102.0.5005.196
Node.js: 16.14.2
V8: 10.2.154.26-electron.0
OS: Darwin x64 22.3.0
Sandboxed: Yes

我有一个build.gradle文件,但它的语法我不是很熟悉:

buildscript {
  ext { 
    apply from: 'project.gradle'
    ...
  }
}

repositories {
  maven { ... } /* these are a bunch of repos */ 
  maven { ... } /* these are a bunch of repos */ 
  maven { ... } /* these are a bunch of repos */ 
}

configurations { ... }

dependencies { ... }

task foo1 { ... }
task foo2 { ... }
task foo3 { ... }

settings.gradle

rootProject.name = 'MyProject'

在VSCode中单独尝试“创建Java项目”,似乎只要应用程序找到带有项目名称的settings.gradle,那么“JAVA PROJECTS”就会正常显示,但我的真实项目却不行。

有什么想法,为什么VSCode找不到“JAVA PROJECTS”项目?它在Gradle项目中真正寻找的是什么?

No Java Projects found in gradle project


0
在我的情况下,我通过创建一个新的Java项目,并比较生成的文件来解决了这个问题。尤其是我发现在 .project 文件中有缺失的条目。
<buildSpec>
        <buildCommand>          <!-- was missing -->
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature> <!-- was missing -->
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>

还有一些在.settings/org.eclipse.jdt.core.prefs中的设置丢失了,但是直到我添加上述内容后才立即解决了问题。

当然,每次进行更改时都需要清理工作区(使用... -> 清理工作区或命令面板Java > 清理Java语言服务器工作区)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接