通过 Eclipse™ JDT 语言服务器提供 Java™ 语言支持,该服务器利用 Eclipse™ JDT、M2Eclipse 和 Buildship。
安装扩展
在以下平台上,扩展应该无需任何设置即可激活: win32-x64 、 darwin-x64 、 darwin-arm64 、 linux-x64 、 linux-arm64 。
如果在其他平台上,或者使用“通用”版本,则可以设置一个Java开发工具包。它必须是 Java 17 或更高版本。
或者,为您的项目下载并安装 Java 开发工具包(支持 Java 1.8 或更高版本)。有关更多详细信息,请参阅项目 JDK
当您第一次访问 Java 文件时,扩展会被激活
识别目录层次结构中具有Maven或Gradle构建文件的项目。

支持从 Java 1.8 到 Java 23 的代码
Maven pom.xml 项目支持
Gradle 项目支持(具有实验性 Android 项目导入支持)
独立 Java 文件支持
键入时报告解析和编译错误
代码完成
代码/源操作/重构
Javadoc 悬停
组织进口
手动触发或保存时触发
使用Ctrl+Shift+v (在 Mac 上为Cmd+Shift+v )将代码粘贴到 java 文件中时。
类型搜索
代码概要
代码折叠
代码导航
代码镜头(参考/实现)
亮点
代码格式化(类型/选择/文件)
代码片段
注释处理支持(Maven 项目自动)
语义选择
诊断标签
调用层次结构
类型层次结构
要启动和调试 Java 程序,建议您安装Visual Studio Code 的 Java 调试扩展。
请参阅最新版本的变更日志。您还可以在项目 Wiki 中找到有用的信息。
现在 Java 扩展将发布特定于平台的版本,它将嵌入支持平台的 JRE,例如win32-x64 、 linux-x64 、 linux-arm64 、 darwin-x64 、 darwin-arm64 。嵌入式 JRE 用于启动 Java 语言服务器。用户只负责配置 Project JDK 来编译您的 Java 项目。
以下部分仅针对没有嵌入JRE的通用版本保留。
工具 JDK 将用于启动 Java 语言服务器。默认情况下,也将用于编译您的项目。 Java 17 是所需的最低版本。
Java 开发工具包的路径可以通过 VS Code 设置(工作空间/用户设置)中的java.jdt.ls.java.home设置来指定。如果未指定,则按以下顺序搜索,直到 JDK 满足当前最低要求。
JDK_HOME环境变量
JAVA_HOME环境变量在当前系统路径上
如果您需要针对不同的 JDK 版本编译项目,建议您在用户设置中配置java.configuration.runtimes属性,例如:
“java.configuration.runtimes”:[
{“名称”:“JavaSE-1.8”,“路径”:“/path/to/jdk-8”,
},
{“名称”:“JavaSE-11”,“路径”:“/path/to/jdk-11”,
},
{“名称”:“JavaSE-23”,“路径”:“/path/to/jdk-23”,“默认”:true
},
]当您打开独立的 Java 文件时,将使用默认运行时。
可以使用以下命令:
Switch to Standard Mode :将 Java 语言服务器切换到Standard模式。仅当 Java 语言服务器处于LightWeight模式时,此命令才可用。
Java: Reload Projects ( Shift+Alt+U ):根据项目构建描述符强制项目配置/类路径更新(例如依赖项更改或 Java 编译级别)。
Java: Import Java Projects into Workspace :检测所有 Java 项目并将其导入到 Java 语言服务器工作区。
Java: Open Java Language Server Log File :打开 Java 语言服务器日志文件,对于排除问题很有用。
Java: Open Java Extension Log File :打开 Java 扩展日志文件,对于排除问题很有用。
Java: Open All Log Files :打开 Java 语言服务器日志文件和 Java 扩展日志文件。
Java: Force Java Compilation ( Shift+Alt+B ):手动触发工作区编译。
Java: Rebuild Projects :手动触发所选项目的完整构建。
Java: Open Java Formatter Settings :打开 Eclipse 格式化程序设置。如果不存在,则创建一个新的设置文件。
Java: Clean Java Language Server Workspace :清理 Java 语言服务器工作区。
Java: Attach Source :将 jar/zip 源附加到当前打开的二进制类文件。此命令仅在编辑器上下文菜单中可用。
Java: Add Folder to Java Source Path :将选定的文件夹添加到其项目源路径。此命令仅在文件资源管理器上下文菜单中可用,并且仅适用于非托管文件夹。
Java: Remove Folder from Java Source Path :从其项目源路径中删除选定的文件夹。此命令仅在文件资源管理器上下文菜单中可用,并且仅适用于非托管文件夹。
Java: List All Java Source Paths :列出 Java 语言服务器工作区识别的所有 Java 源路径。
Java: Show Build Job Status :在 Visual Studio Code 终端中显示 Java 语言服务器作业状态。
Java: Go to Super Implementation :转到编辑器中当前选定符号的超级实现。
Java: Restart Java Language Server :重新启动 Java 语言服务器。
支持以下设置:
java.home :已弃用,请改用“java.jdt.ls.java.home”。用于启动 Java 语言服务器的 JDK 主文件夹的绝对路径。需要重新启动 VS Code。
java.jdt.ls.lombokSupport.enabled :是否启用 lombok 支持。默认为true 。
java.jdt.ls.vmargs :用于启动 Java 语言服务器的额外 VM 参数。需要重新启动 VS Code。
java.errors.incompleteClasspath.severity :指定 Java 文件的类路径不完整时消息的严重性。支持的值为ignore 、 info 、 warning 、 error 。
java.trace.server :跟踪 VS Code 和 Java 语言服务器之间的通信。
java.configuration.updateBuildConfiguration :指定对构建文件的修改如何更新 Java 类路径/配置。支持的值是disabled (没有任何反应)、 interactive (询问每次修改时的更新)、 automatic (自动触发更新)。
java.configuration.maven.userSettings :Maven 的用户 settings.xml 的路径。
java.configuration.checkProjectSettingsExclusions :已弃用,请使用 'java.import.generatesMetadataFilesAtProjectRoot' 控制是否在项目根生成项目元数据文件。并使用“files.exclude”控制是否在文件资源管理器中隐藏项目元数据文件。控制是否从文件资源管理器中排除扩展生成的项目设置文件( .project 、 .classpath 、 .factorypath 、 .settings/ )。默认为false 。
java.referencesCodeLens.enabled :启用/禁用参考代码镜头。
java.implementationsCodeLens.enabled :启用/禁用实现代码镜头。
java.signatureHelp.enabled :启用/禁用签名帮助支持(在( ) 上触发。
java.signatureHelp.description.enabled :启用/禁用在签名帮助中显示描述。默认为false 。
java.contentProvider.preferred :首选内容提供程序(请参阅 vscode-java-decompiler 中提供的第 3 方反编译器)。
java.import.exclusions :通过 glob 模式从导入中排除文件夹。使用!否定模式以允许子文件夹导入。您必须包含父目录。顺序很重要。
java.import.gradle.enabled :启用/禁用 Gradle 导入器。
指定 Java 扩展使用的 Gradle 发行版:
java.import.gradle.wrapper.enabled :使用“gradle-wrapper.properties”文件中的 Gradle。默认为true 。
java.import.gradle.version :如果 Gradle 包装器丢失或禁用,则使用特定版本的 Gradle。
java.import.gradle.home :如果 Gradle 包装器丢失或禁用并且未指定“java.import.gradle.version”,则使用指定本地安装目录或 GRADLE_HOME 中的 Gradle。
java.import.gradle.arguments :传递给 Gradle 的参数。
java.import.gradle.jvmArguments :传递给 Gradle 的 JVM 参数。
java.import.gradle.user.home :GRADLE_USER_HOME 的设置。
java.import.gradle.offline.enabled :启用/禁用 Gradle 离线模式。默认为false 。
java.import.maven.enabled :启用/禁用 Maven 导入器。
java.autobuild.enabled :启用/禁用“自动构建”。
java.maxConcurrentBuilds :设置最大同时项目构建。
java.completion.enabled :启用/禁用代码完成支持。
java.completion.guessMethodArguments :指定在完成期间如何填充参数。默认为auto 。
auto :仅在使用 Visual Studio Code - Insiders 时使用off ,其他平台将默认为insertBestGuessedArguments 。
off :完成期间不会插入方法参数。
insertParameterNames :参数名称将在完成期间插入。
insertBestGuessedArguments :将根据代码上下文在完成期间插入最佳猜测的参数。
java.completion.filteredTypes :定义类型过滤器。在内容辅助或快速修复建议以及组织导入时,将忽略完全限定名称与所选过滤字符串匹配的所有类型。例如,“java.awt.*”将隐藏 awt 包中的所有类型。
java.completion.favoriteStaticMembers :定义静态成员或具有静态成员的类型的列表。
java.completion.importOrder :定义导入语句的排序顺序。
java.format.enabled :启用/禁用默认的 Java 格式化程序。
java.format.settings.url :指定 Eclipse 格式化程序 xml 设置的 url 或文件路径。
java.format.settings.profile :Eclipse 格式化程序设置中的可选格式化程序配置文件名称。
java.format.comments.enabled :包含代码格式化期间的注释。
java.format.onType.enabled :启用/禁用类型格式化(在; 、 }或<return>上触发)。
java.foldingRange.enabled :启用/禁用智能折叠范围支持。如果禁用,它将使用 VS Code 提供的默认基于缩进的折叠范围。
java.maven.downloadSources :在导入 Maven 项目时启用/禁用 Maven 源工件的下载。
java.maven.updateSnapshots :强制更新快照/版本。默认为false 。
java.codeGeneration.hashCodeEquals.useInstanceof :在生成 hashCode 和 equals 方法时使用 'instanceof' 来比较类型。默认为false 。
java.codeGeneration.hashCodeEquals.useJava7Objects :生成 hashCode 和 equals 方法时使用 Objects.hash 和 Objects.equals。此设置仅适用于 Java 7 及更高版本。默认为false 。
java.codeGeneration.useBlocks :生成方法时在“if”语句中使用块。默认为false 。
java.codeGeneration.generateComments :生成方法时生成方法注释。默认为false 。
java.codeGeneration.toString.template :生成 toString 方法的模板。默认为${object.className} [${member.name()}=${member.value}, ${otherMembers}] 。
java.codeGeneration.toString.codeStyle :生成 toString 方法的代码样式。默认为STRING_CONCATENATION 。
java.codeGeneration.toString.skipNullValues :生成 toString 方法时跳过 null 值。默认为false 。
java.codeGeneration.toString.listArrayContents :列出数组内容,而不是使用本机 toString()。默认为true 。
java.codeGeneration.toString.limitElements :限制要列出的数组/集合/映射中的项目数量,如果为 0,则列出所有项目。默认为0 。
java.selectionRange.enabled :启用/禁用 Java 的智能选择支持。禁用此选项不会影响 VS Code 内置的基于单词和基于括号的智能选择。
java.showBuildStatusOnStart.enabled :启动时自动显示构建状态,默认为notification 。
为了向后兼容,此设置还接受布尔值,其中
true与notification具有相同的含义,false与off具有相同的含义。
notification :通过进度通知显示构建状态。
terminal :通过终端显示构建状态。
off :不显示任何构建状态。
java.project.outputPath :存储编译输出的工作区的相对路径。 Only在WORKSPACE范围内有效。该设置NOT影响 Maven 或 Gradle 项目。
java.project.referencedLibraries :配置 glob 模式以将本地库引用到 Java 项目。
java.completion.maxResults :完成结果的最大数量(不包括片段)。 0 (默认值)禁用限制,返回所有结果。如果出现性能问题,请考虑设置合理的限制。
java.configuration.runtimes :将 Java 执行环境映射到本地 JDK。
java.server.launchMode :
默认启动模式是Hybrid 。传统模式是Standard
Standard :提供完整的功能,如智能感知、重构、构建、Maven/Gradle 支持等。
LightWeight :以较低的启动成本启动语法服务器。只提供大纲、导航、javadoc、语法错误等语法功能。轻量级模式不会加载第三方扩展,例如java测试运行器、java调试器等。
Hybrid :提供完整的功能和更好的响应能力。它启动一个标准语言服务器和一个辅助语法服务器。语法服务器提供语法功能,直到标准服务器准备就绪。当标准服务器完全准备好后,语法服务器将自动关闭。
java.sources.organizeImports.starThreshold :指定使用星型导入声明之前添加的导入数量,默认值为 99。
java.sources.organizeImports.staticStarThreshold :指定使用星型导入声明之前添加的静态导入的数量,默认值为 99。
java.imports.gradle.wrapper.checksums :定义 Gradle 包装器允许/不允许的 SHA-256 校验和。
java.project.importOnFirstTimeStartup :指定首次以混合模式打开文件夹时是否导入 Java 项目。支持的值有disabled (从不导入)、 interactive (询问是否导入)、 automatic (始终导入)。默认为automatic 。
java.project.importHint :当启动时跳过 Java 项目导入时,启用/禁用服务器模式切换信息。默认为true 。
java.import.gradle.java.home :指定用于运行 Gradle 守护程序的 JVM 的位置。
java.project.resourceFilters :排除文件和文件夹被 Java Language Server 刷新,这可以提高整体性能。例如,["node_modules",".git"] 将排除名为“node_modules”或“.git”的所有文件和文件夹。模式表达式必须与java.util.regex.Pattern兼容。默认为 ["node_modules",".git"]。
java.templates.fileHeader :指定新 Java 文件的文件头注释。支持使用字符串数组配置多行注释,并使用${variable}引用预定义变量。
java.templates.typeComment :指定新 Java 类型的类型注释。支持使用字符串数组配置多行注释,并使用${variable}引用预定义变量。
java.references.includeAccessors :查找引用时包括 getter、setter 和 builder/constructor。默认为 true。
java.configuration.maven.globalSettings :Maven 的全局 settings.xml 的路径。
java.configuration.maven.lifecycleMappings :Maven 生命周期映射 xml 的路径。
java.eclipse.downloadSources :启用/禁用 Eclipse 项目的 Maven 源工件的下载。
java.references.includeDecompiledSources :查找引用时包含反编译源。默认为 true。
java.project.sourcePaths :存储源文件的工作区的相对路径。 Only在WORKSPACE范围内有效。该设置NOT影响 Maven 或 Gradle 项目。
java.typeHierarchy.lazyLoad :启用/禁用延迟加载类型层次结构中的内容。延迟加载可以节省大量加载时间,但每种类型都应该手动扩展以加载其内容。
java.codeGeneration.insertionLocation :指定源操作生成的代码的插入位置。默认为afterCursor 。
afterCursor :将生成的代码插入到光标所在成员的后面。
beforeCursor :将生成的代码插入到光标所在成员之前。
lastMember :插入生成的代码作为目标类型的最后一个成员。
java.codeGeneration.addFinalForNewDeclaration :是否为创建新声明的代码操作生成“最终”修饰符。默认为none 。
none : 不生成final修饰符
fields :仅为新字段声明生成“final”修饰符
variables :仅为新变量声明生成“final”修饰符
all :为所有新声明生成“final”修饰符
java.settings.url :指定工作区 Java 设置的 url 或文件路径。请参阅设置全局首选项
java.symbols.includeSourceMethodDeclarations :在符号搜索中包含源文件中的方法声明。默认为false 。
java.quickfix.showAt :显示问题或行级别的快速修复。
java.configuration.workspaceCacheLimit :保留未使用的工作区缓存数据的天数(如果启用)。超出此限制,缓存的工作区数据可能会被删除。
java.import.generatesMetadataFilesAtProjectRoot :指定是否在项目根目录生成项目元数据文件(.project、.classpath、.factorypath、.settings/)。默认为false 。
java.inlayHints.parameterNames.enabled :启用/禁用参数名称的嵌入提示。支持的值包括: none (禁用参数名称提示)、 literals (仅对文字参数启用参数名称提示)和all (对文字参数和非文字参数启用参数名称提示)。默认为literals 。
java.compile.nullAnalysis.nonnull :指定用于 null 分析的 Nonnull 注释类型。如果指定了多个注释,则将首先使用最上面的注释(如果项目依赖项中存在该注释)。如果java.compile.nullAnalysis.mode设置为disabled则此设置将被忽略。
java.compile.nullAnalysis.nullable :指定用于 null 分析的 Nullable 注释类型。如果指定了多个注释,则将首先使用最上面的注释(如果项目依赖项中存在该注释)。如果java.compile.nullAnalysis.mode设置为disabled则此设置将被忽略。
java.compile.nullAnalysis.nonnullbydefault :指定用于 null 分析的 NonNullByDefault 注释类型。如果指定了多个注释,则将首先使用最上面的注释(如果项目依赖项中存在该注释)。如果java.compile.nullAnalysis.mode设置为disabled则此设置将被忽略。
java.import.maven.offline.enabled :启用/禁用 Maven 离线模式。默认为false 。
java.codeAction.sortMembers.avoidVolatileChanges :由于不同的初始化和持久性顺序,字段、枚举常量和初始值设定项的重新排序可能会导致语义和运行时更改。此设置可以防止这种情况发生。默认为true 。
java.jdt.ls.protobufSupport.enabled :指定是否自动将 Protobuf 输出源目录添加到类路径中。注意:仅适用于 Gradle com.google.protobuf插件0.8.4或更高版本。默认为true 。
java.jdt.ls.androidSupport.enabled : [实验] 指定是否启用 Android 项目导入。当设置为auto时,将在 Visual Studio Code - Insiders 中启用 Android 支持。注意:仅适用于 Android Gradle Plugin 3.2.0或更高版本。默认为auto 。
java.completion.postfix.enabled :启用/禁用后缀完成支持。默认为true 。
java.completion.chain.enabled :启用/禁用链完成支持。默认为false 。
java.completion.matchCase :指定代码完成时是否匹配大小写。默认为firstLetter 。
java.compile.nullAnalysis.mode :指定如何启用基于注释的空分析。支持的值有disabled (禁用空分析)、 interactive (检测到空注释类型时询问)、 automatic (检测到空注释类型时自动启用空分析)。默认为interactive 。
java.cleanup.actionsOnSave :已弃用,请改用“java.cleanup.actions”。保存当前文档时要运行的清理列表。清理可以自动修复代码风格或编程错误。单击此处详细了解每次清理的作用。
java.cleanup.actions :保存当前文档或发出清理命令时要对当前文档运行的清理列表。清理可以自动修复代码风格或编程错误。单击此处详细了解每次清理的作用。
java.saveActions.cleanup :启用/禁用保存时的清理操作。
java.import.gradle.annotationProcessing.enabled :启用/禁用 Gradle 项目上的注释处理并委托给 JDT APT。仅适用于 Gradle 5.2 或更高版本。
java.sharedIndexes.enabled : [实验] 指定是否在不同工作区之间共享索引。默认为auto ,共享索引会在 Visual Studio Code - Insiders 中自动启用。
汽车
在
离开
java.sharedIndexes.location :指定所有工作区的公共索引位置。查看默认值如下:
Windows:首先使用"$APPDATA.jdtindex" ,如果不存在则使用"~.jdtindex"
macOS: "~/Library/Caches/.jdt/index"
Linux:首先使用"$XDG_CACHE_HOME/.jdt/index" ,如果不存在则使用"~/.cache/.jdt/index"
java.refactoring.extract.interface.replace :指定是否用新提取的接口替换所有出现的子类型。默认为true 。
java.import.maven.disableTestClasspathFlag :启用/禁用测试类路径隔离。启用后,这允许将 Maven 项目中的测试资源用作其他项目的编译范围内的依赖项。默认为false 。
java.configuration.maven.defaultMojoExecutionAction :指定在无法检测到关联元数据时的默认 mojo 执行操作。默认ignore 。
java.completion.lazyResolveTextEdit.enabled :[实验] 启用/禁用延迟解析文本编辑以完成代码。默认为true 。
java.edit.validateAllOpenBuffersOnChanges :指定在编辑 Java 文件时是否重新检查所有打开的 Java 文件以进行诊断。默认为false 。
java.editor.reloadChangedSources :指定当源 jar 文件更改时是否重新加载打开的类文件的源。默认ask 。
ask : 要求重新加载打开的类文件的源
auto :自动重新加载打开的类文件的源
manual :手动重新加载打开的类文件的源
java.edit.smartSemicolonDetection.enabled :定义smart semicolon检测。默认为false 。
java.configuration.detectJdksAtStart :启动时自动检测本地计算机上安装的 JDK。如果您在java.configuration.runtimes中指定了相同的 JDK 版本,则扩展将首先使用该版本。默认为true 。
java.completion.collapseCompletionItems :启用/禁用完成项中重载方法的折叠。覆盖java.completion.guessMethodArguments 。默认为false 。
java.diagnostic.filter :指定不应该报告匹配文档诊断的文件模式列表(例如“**/Foo.java”)。
java.search.scope :指定搜索操作必须使用的范围,例如
查找参考
调用层次结构
工作区符号
java.jdt.ls.javac.enabled : [实验] 指定是否在语言服务器中启用基于 Javac 的编译。需要使用 Java 23 运行此扩展。默认为off 。
java.completion.engine :[实验] 选择代码完成引擎。默认为ecj 。
语义突出显示修复了默认 Java Textmate 语法的许多语法突出显示问题。但是,您可能会遇到一些小问题,尤其是启动时的延迟,因为在打开新文件或键入时需要由 Java 语言服务器计算。可以使用editor.semanticHighlighting.enabled设置禁用所有语言的语义突出显示,或者仅使用特定于语言的编辑器设置禁用 Java。
检查右下角语言工具的状态(下图中标有 A 的部分)。它应该显示就绪(竖起大拇指),如下图所示。如果发生故障,您可以单击状态并打开语言工具日志以获取更多信息。
阅读故障排除指南以收集有关您可能遇到的问题的信息。
向项目报告您遇到的任何问题。
这是一个向任何人开放的开源项目。非常欢迎您的贡献!
有关入门的信息,请参阅贡献说明。
持续集成版本可以从 http://download.jboss.org/jbosstools/jdt.ls/staging/ 安装。下载最新的java-<version>.vsix文件并按照此处的说明进行安装。稳定版本存档在 http://download.jboss.org/jbosstools/static/jdt.ls/stable/ 下。
此外,您还可以按照此处的说明贡献自己的 VS Code 扩展来增强现有功能。
有问题吗?在 GitHub 讨论上发起讨论,
在 GitHub Issues 中提交错误,
在 Gitter 上与我们聊天,
向我们发送其他反馈。
EPL 2.0,请参阅许可证了解更多信息。