透過 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: 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,請參閱許可證以了解更多資訊。