通过 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,请参阅许可证了解更多信息。