现已推出!阅读 10 月份的新功能和修复。

在 VS Code 中管理 Java 项目

用于 Java 的 项目管理器 扩展可以帮助你管理 Java 项目及其依赖项。它还有助于你创建新的 Java 项目、包和类。若要在 Visual Studio Code 中获得完整的 Java 语言支持,可以安装 用于 Java 的扩展包,其中包含用于 Java 的项目管理器扩展。

安装用于 Java 的扩展包

有关如何开始使用扩展包的详细信息,可以查看 Java 入门 教程。

项目视图

Java 项目视图可帮助你查看 Java 项目及其依赖项,并提供用于项目管理任务的入口点。

project view

默认情况下,Java 项目视图显示在资源管理器视图下方。如果你看不到它,请尝试单击资源管理器标题栏中的...按钮,然后选择Java 项目

在导航栏的溢出按钮中,还有更多可用的选项。例如,可以在分层视图和扁平视图之间切换。

overflow button

你可以在资源管理器中节点旁边找到按钮,这些按钮为某些操作提供有用的快捷方式。

inline button

每个节点的上下文菜单中还有许多有用的功能,你可以在资源管理器中右键单击该节点以将其切换出来。

context menu

创建新的 Java 项目

你可以通过单击导航栏中的+按钮或通过命令来创建新的 Java 项目:Java: 创建 Java 项目...(在命令面板中(⇧⌘P(Windows、Linux Ctrl+Shift+P)))。在创建过程中,VS Code 将根据你的项目类型帮助安装所需的扩展(如果尚未安装)。

create project

导入 Java 项目

你可以通过文件 > 打开文件夹...将现有的 Java 项目和模块直接导入到你的工作区(确保打开的文件夹包含你的构建工具脚本,例如,pom.xmlbuild.gradle)。用于 Java 的 VS Code 将检测你的项目并自动导入它们。

将新模块添加到项目后,可以触发命令Java: 导入工作区中的 Java 项目将它们导入到你的工作区。此命令有助于将新项目导入工作区,而无需重新加载 VS Code 窗口。

导出到 JAR

你可以从项目视图导出构建到 JAR,或者通过运行命令Java: 导出 Jar...来导出。

Export jar from the project view

配置项目的运行时

随着 Java 的发展,开发人员通常会使用多个版本的 JDK。可以通过以下设置将它们映射到本地安装路径:java.configuration.runtimes。该设置具有以下格式

"java.configuration.runtimes": [
  {
    "name": "JavaSE-1.8",
    "path": "/usr/local/jdk1.8.0_201"
  },
  {
    "name": "JavaSE-11",
    "path": "/usr/local/jdk-11.0.3",
    "sources" : "/usr/local/jdk-11.0.3/lib/src.zip",
    "javadoc" : "https://docs.oracle.com/en/java/javase/11/docs/api",
    "default":  true
   },
   {
    "name": "JavaSE-12",
    "path": "/usr/local/jdk-12.0.2"
   },
   {
    "name": "JavaSE-13",
    "path": "/usr/local/jdk-13"
   }
]

注意:可以通过在条目中添加"default": true将其中一个设置为默认值。默认 JDK 将用于你的未管理文件夹(没有构建工具)。

若要查看哪些 JDK 用于你的项目,可以触发命令Java: 配置 Java 运行时(在命令面板⇧⌘P(Windows、Linux Ctrl+Shift+P)))。此命令将打开一个视图,显示项目运行时信息

Project runtime

更改 Maven 和 Gradle 项目的 JDK

如果你要更改 Maven 或 Gradle 项目的 JDK 版本,则需要在构建脚本(pom.xmlbuild.gradle)中更新它。可以单击查看如何进行此类更改。单击将导航到项目的构建脚本文件。

更改未管理文件夹的 JDK

若要更改未管理文件夹(没有任何构建工具)的 JDK,可以单击按钮。它将列出所有 JDK,你可以选择一个用于未管理的文件夹。

下载 JDK

如果你要下载新的 JDK,可以单击download链接,或者在命令面板⇧⌘P(Windows、Linux Ctrl+Shift+P))中触发命令Java: 安装新 JDK。它将打开一个新视图,指导你下载 JDK。

Download-jdk

注意:若要启用 Java 预览功能,请参阅 如何将 VS Code 与新 Java 版本一起使用

配置未管理文件夹的类路径

用于 Java 的项目管理扩展提供了一个用户界面来配置未管理文件夹的类路径。可以在类路径配置页面手动设置类路径。可以通过从命令面板执行命令Java: 配置类路径来打开它(⇧⌘P(Windows、Linux Ctrl+Shift+P)))。

configure classpath

在某些极少数情况下,可能需要通过从命令面板执行命令Java: 清理 Java 语言服务器工作区来清理 Java 工作区(⇧⌘P(Windows、Linux Ctrl+Shift+P))),以使语言服务器重新构建你的依赖项。

依赖项管理

添加 Maven 依赖项

对于 Maven 项目,可以通过单击项目视图中Maven 依赖项节点旁边的+图标来添加依赖项。

add maven dependency

管理未管理文件夹的依赖项

如果你的项目是没有任何构建工具的未管理文件夹。可以通过单击引用库节点或其下方的项目旁边的+图标或-图标来管理依赖项,或者可以将你的 jar 库直接拖放到引用库节点。

manage referenced librares

你也可以在类路径配置页面管理依赖项。请参阅:配置未管理文件夹的类路径

在幕后,settings.json中有一个设置java.project.referencedLibraries。以下是有关如何自定义此设置的详细信息。

包含库

使用一组 glob 模式来描述要引用的库。

例如

"java.project.referencedLibraries": [
    "library/**/*.jar",
    "/home/username/lib/foo.jar"
]

上面的设置将向项目的外部分依赖项添加工作区库文件夹中的所有.jar文件以及来自指定绝对路径的foo.jar

然后,VS Code 会监视引用的库,如果这些依赖项文件中的任何一个发生更改,项目将刷新。

默认情况下,VS Code 将使用 glob 模式lib/**/*.jar引用工作区lib目录中的所有 JAR 文件。

排除某些库

如果你要从项目中排除某些库,可以扩展java.project.referencedLibraries以使用include/exclude字段并添加exclude glob 模式

"java.project.referencedLibraries": {
    "include": [
        "library/**/*.jar",
        "/home/username/lib/foo.jar"
    ],
    "exclude": [
        "library/sources/**"
    ]
}

在上面的示例中,library/sources 文件夹中的任何二进制 JAR 文件都被忽略,因为它们是项目的外部依赖项。

附加源代码 JAR

默认情况下,引用的 {binary}.jar 将尝试在同一目录下搜索 {binary}-sources.jar,并在找到匹配项时将其作为源代码附加。

如果要手动指定 JAR 文件作为源代码附件,可以在 sources 字段中提供一个键值对映射

"java.project.referencedLibraries": {
    "include": [
        "library/**/*.jar",
        "/home/username/lib/foo.jar"
    ],
    "exclude": [
        "library/sources/**"
    ],
    "sources": {
        "library/bar.jar": "library/sources/bar-src.jar"
    }
}

这样,bar-src.jar 将被附加到 bar.jar 作为其源代码。

轻量级模式

VS Code for Java 支持两种模式:轻量级模式和标准模式。在轻量级模式下,只有源代码文件和 JDK 由语言服务器解析;在标准模式下,导入的依赖项将被解析,并且项目将由语言服务器构建。当您需要一个快速启动且轻量级的环境来处理您的源代码文件时,轻量级模式最有效,例如读取源代码、在源代码和 JDK 之间导航、查看大纲和 Javadoc 以及检测和修复语法错误。此外,代码补全在源代码文件和 JDK 的范围内得到支持。

轻量级模式不解析导入的依赖项也不构建项目,因此不支持运行、调试、重构、代码 linting 或检测语义错误。要使用这些功能,需要将您的工作区从轻量级模式切换到标准模式。

可以通过配置 java.server.launchMode 并使用以下选项来控制要启动的模式

  • 混合(默认) - 首先,工作区以轻量级模式打开。如果您的工作区包含未解析的 Java 项目,系统会询问您是否要切换到标准模式。如果选择 **稍后**,它将保持轻量级模式。您可以点击状态栏中的语言状态项手动切换到标准模式。
  • 标准 - 工作区以标准模式打开。
  • 轻量级 - 工作区以轻量级模式打开。您可以点击状态栏中的语言状态项手动切换到标准模式。

语言状态项使用不同的图标指示当前工作区处于哪种模式。

  • - 工作区以轻量级模式打开。
  • - 工作区正在以标准模式打开。
  • - 工作区以标准模式打开。

点击语言状态项将切换到标准模式。

Switch to Standard

构建状态

当您在 Visual Studio Code 中编辑 Java 源代码时,Java 语言服务器将构建您的工作区,以为您提供必要的语言功能。您可以点击状态栏中的语言状态项查看详细的构建任务状态,并观察幕后发生的事情。您也可以在显示语言服务器正在打开 Java 项目的通知时选择 **检查详细信息** 链接,以查看构建任务状态。

其他资源

有一些 Visual Studio Code 扩展来支持不同的 Java 构建系统。以下是几种流行构建系统的扩展。

如果您在使用上述功能时遇到任何问题,可以通过创建 问题 联系我们。

后续步骤

继续阅读以了解有关

  • Java 编辑 - 探索 VS Code 中 Java 的编辑功能。
  • Java 调试 - 了解如何使用 VS Code 调试您的 Java 项目。
  • Java 测试 - 使用 VS Code 进行 JUnit 和 TestNG 测试。
  • Java 扩展 - 了解有关 VS Code 的更多有用的 Java 扩展。