VS Code拓展--Language Support for Java(TM) by Red Hat(1.3.0)

Language Support for Java(TM) by Red Hat(1.3.0)

注意:版本問題,可能會有部分出入

功能目錄

設置

  • java.home

    作用:

    指定用於啟動 Java 語言伺服器的 JDK (11或更近版本)的文件夾路徑。在 Windows 上,反斜杠必須轉義

    "java.home":"C:\\Program Files\\Java\\jdk11.0_8"
    

    默認值:null

  • java.jdt.ls.java.home

    作用:

    指定用於啟動Java語言伺服器的JDK(11或更近版本)的文件夾路徑。此設置將替換Java擴展的嵌入式JRE以啟動Java語言伺服器。在Windows上,反斜杠必須轉義

    "java.jdt.ls.java.home":"C:\\Program Files\\Java\\jdk11.0_8"
    

    默認值:null

  • java.jdt.ls.vmargs

    作用:

    指定用於啟動Java語言伺服器的額外VM參數

    "java.jdt.ls.vmargs":"-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx1G -Xms100m"
    // 優化並行垃圾收集器的記憶體使用
    

    默認值:-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx1G -Xms100m

  • java.errors.incompleteClasspath.severity

    作用:

    指定Java文件的類路徑不完整時消息的嚴重性

    "java.errors.incompleteClasspath.severity": "warning"
    

    默認值:warning

  • java.configuration.checkProjectSettingsExclusions

    作用:

    控制是否從文件管理器中排除擴展生成的項目設置文件(.project, .classpath, .factorypath, .settings/)

    "java.configuration.checkProjectSettingsExclusions": true
    

    默認值:true

  • java.configuration.updateBuildConfiguration

    作用:

    指定對生成文件的修改如何更新Java類路徑/配置

    "java.configuration.updateBuildConfiguration": "interactive"
    

    默認值:interactive

  • java.trace.server

    作用:

    跟蹤VS程式碼與Java語言伺服器之間的通訊

    "java.trace.server": "off"
    

    默認值:off

  • java.import.maven.enabled

    作用:

    啟用/禁用 Maven 導入器

    "java.import.maven.enabled": true
    

    默認值:true

  • java.import.gradle.enabled

    作用:

    啟用/禁用 Gradle 導入程式

    "java.import.gradle.enabled": true
    

    默認值:true

  • java.import.gradle.wrapper.enabled

    作用:

    使用 gradle-wrapper.properties 文件中的Gradle

    "java.import.gradle.wrapper.enabled": true
    

    默認值:true

  • java.import.gradle.version

    作用:

    如果Gradle包裝丟失或禁用,請使用特定版本的Gradle

    "java.import.gradle.version": null
    

    默認值:null

  • java.import.gradle.home

    作用:

    如果Gradle包裝器丟失或禁用且沒有指定 java.import.gradle.version ,請從指定的本地安裝目錄或 Gradle_HOME 使用 Gradle

    "java.import.gradle.home": null
    

    默認值:null

  • java.import.gradle.offline.enabled

    作用:

    啟用/禁用 Gradle離線模式

    "java.import.gradle.offline.enabled": false
    

    默認值:false

  • java.import.gradle.arguments

    作用:

    要傳遞給 Gradle的參數

    "java.import.gradle.arguments": null
    

    默認值:null

  • java.import.gradle.jvmArguments

    作用:

    要傳遞給 Gradle的JVM參數

    "java.import.gradle.jvmArguments": null
    

    默認值:null

  • java.import.gradle.user.home

    作用:

    設置 GRADLE_USER_HOME

    "java.import.gradle.user.home": null
    

    默認值:null

  • java.maven.downloadSources

    作用:

    作為導入Maven項目的一部分,啟用/禁用Maven源工件的下載

    "java.maven.downloadSources": false
    

    默認值:false

  • java.eclipse.downloadSources

    作用:

    為Eclipse項目啟用/禁用Maven源程式碼工件的下載

    "java.eclipse.downloadSources": false
    

    默認值:false

  • java.maven.updateSnapshots

    作用:

    強制更新快照

    "java.maven.updateSnapshots": false
    

    默認值:false

  • java.referencesCodeLens.enabled

    作用:

    啟用/禁用參考CodeLens(顯示引用)

    "java.referencesCodeLens.enabled": false
    

    默認值:false

  • java.signatureHelp.enabled

    作用:

    啟用/禁用識別標誌幫助

    "java.signatureHelp.enabled": false
    

    默認值:false

  • java.implementationsCodeLens.enabled

    作用:

    啟用/禁用實例CodeLens(顯示引用)

    "java.implementationsCodeLens.enabled": false
    

    默認值:false

  • java.configuration.maven.userSettings

    作用:

    設置 Maven 用戶配置文件(settings.xml)的路徑

    "java.configuration.maven.userSettings": null
    

    默認值:null

  • java.configuration.maven.globalSettings

    作用:

    設置 Maven 全局配置文件(settings.xml)的路徑

    "java.configuration.maven.globalSettings": null
    

    默認值:null

  • java.configuration.maven.notCoveredPluginExecutionSeverity

    作用:

    指定插件執行不在Maven build lifecycle範圍內時的嚴重性

    "java.configuration.maven.notCoveredPluginExecutionSeverity": "warning"
    

    默認值:warning

  • java.configuration.workspaceCacheLimit

    作用:

    • 保留未使用的工作區快取數據的天數(如果啟用)

    • 超過此限制後,快取的工作區數據可能會被刪除

    "java.configuration.workspaceCacheLimit": null
    

    默認值:null

  • java.format.enabled

    作用:

    啟用/禁用默認Java格式化程式

    "java.format.enabled": true
    

    默認值:true

  • java.saveActions.organizeImports

    作用:

    啟用/禁用保存操作時自動組織導入

    "java.saveActions.organizeImports": false
    

    默認值:false

  • java.import.exclusions

    作用:

    • 配置排除文件夾的全局模式
    • 使用 ! 取消模式以允許子文件夾導入,你必須包含一個父目錄
    • 順序很重要
    "java.import.exclusions": "**/node_modules/**,**/.metadata/**,**/archetype-resources/**,**/META-INF/maven/**"
    

    默認值:**/node_modules/**,**/.metadata/**,**/archetype-resources/**,**/META-INF/maven/**

  • java.import.generatesMetadataFilesAtProjectRoot

    作用:

    指定是否在項目根目錄下生成項目元數據文件 (.project, .classpath, .factorypath, .settings/) 單擊此處了解如何更改設置以使其生效

    "java.import.generatesMetadataFilesAtProjectRoot": false
    

    默認值:false

  • java.project.referencedLibraries

    作用:

    配置glob模式,以便將本地庫引用到Java項目

    "java.project.referencedLibraries": "lib/**/*.jar"
    

    默認值:lib/**/*.jar

  • java.project.outputPath

    作用:

    • 存儲編譯輸出的工作空間的相對路徑
    • 僅在工作區範圍內有效
    • 該設置不會影響Maven或Gradle項目
    "java.project.outputPath": 
    

    默認值:``

  • java.project.sourcePaths

    作用:

    • 存儲源文件的工作區的相對路徑
    • 僅在工作區範圍內有效
    • 該設置不會影響Maven或Gradle項目
    "java.project.sourcePaths": 
    

    默認值:``

  • java.contentProvider.preferred

    作用:

    你喜歡的Content Providers(通常是第三方反編譯器id)

    "java.contentProvider.preferred": null
    

    默認值:null

  • java.autobuild.enabled

    作用:

    啟用/禁用"自動生成"(auto build)

    "java.autobuild.enabled": true
    

    默認值:true

  • java.maxConcurrentBuilds

    作用:

    最大同步項目構建數

    "java.maxConcurrentBuilds": 1
    

    默認值:1

  • java.recommendations.dependency.analytics.show

    作用:

    顯示推薦的依賴項分析擴展

    "java.recommendations.dependency.analytics.show": true
    

    默認值:true

  • java.completion.maxResults

    作用:

    • 最大完成結果數(不包括程式碼段)
    • 0(默認值)禁用該限制,將返回所有結果
    • 在性能問題的情況下,考慮設置一個合理的限制
    "java.completion.maxResults": 0
    

    默認值:0

  • java.completion.enabled

    作用:

    啟用/禁用程式碼補全支援

    "java.completion.enabled": true
    

    默認值:true

  • java.completion.overwrite

    作用:

    • 設置為true時,程式碼補全將覆蓋當前文本
    • 當設置為false時,只需添加程式碼即可
    "java.completion.overwrite": true
    

    默認值:true

  • java.completion.guessMethodArguments

    作用:

    當設置為true時,當從程式碼輔助方案列表中選擇方法時,會猜測方法參數

    "java.completion.guessMethodArguments": false
    

    默認值:false

  • java.completion.favoriteStaticMembers

    作用:

    定義靜態成員或具有靜態成員的類型的列表。即使缺少導入,Content assist也會推薦這些靜態成員

    "java.completion.favoriteStaticMembers": "org.junit.Assert.*,org.junit.Assume.*,org.junit.jupiter.api.Assertions.*,org.junit.jupiter.api.Assumptions.*,org.junit.jupiter.api.DynamicContainer.*,org.junit.jupiter.api.DynamicTest.*,org.mockito.Mockito.*,org.mockito.ArgumentMatchers.*,org.mockito.Answers.*"
    

    默認值:org.junit.Assert.*,org.junit.Assume.*,org.junit.jupiter.api.Assertions.*,org.junit.jupiter.api.Assumptions.*,org.junit.jupiter.api.DynamicContainer.*,org.junit.jupiter.api.DynamicTest.*,org.mockito.Mockito.*,org.mockito.ArgumentMatchers.*,org.mockito.Answers.*

  • java.completion.filteredTypes

    作用:

    • 定義類型過濾器。在內容輔助或快速修復方案中以及在組織導入時,將忽略其完全限定名稱與所選篩選器字元串匹配的所有類型
    • 例如 java.awt.* 將對awt包隱藏所有類型
    "java.completion.filteredTypes": "java.awt.*,com.sun.*,sun.*,jdk.*,org.graalvm.*,io.micrometer.shaded.*"
    

    默認值:java.awt.*,com.sun.*,sun.*,jdk.*,org.graalvm.*,io.micrometer.shaded.*

  • java.completion.importOrder

    作用:

    • 定義導入語句的排序順序
    • 包或類型名稱前綴(例如「org.eclipse」)是有效的條目
    • 導入始終添加到最特定的組
    "java.completion.importOrder": "java,javax,com,org"
    

    默認值:java,javax,com,org

  • java.foldingRange.enabled

    作用:

    啟用/禁用智慧摺疊範圍支援。如果禁用,它將使用 VS Code 提供的默認基於縮進的摺疊範圍

    "java.foldingRange.enabled": true
    

    默認值:true

  • java.progressReports.enabled

    作用:

    [實驗性]啟用/禁用伺服器上後台進程的進度報告

    "java.progressReports.enabled": true
    

    默認值:true

  • java.format.settings.url

    作用:

    指定Eclipse格式化程式xml設置的url或文件路徑

    "java.format.settings.url": null
    

    默認值:null

  • java.format.settings.profile

    作用

    Eclipse格式化程式設置中的可選格式化程式配置文件名稱

    "java.format.settings.profile": null
    

    默認值:null

  • java.format.comments.enabled

    作用

    包括程式碼格式化期間的注釋

    "java.format.comments.enabled": true
    

    默認值:true

  • java.format.onType.enabled

    作用

    在鍵入 ; 時啟用/禁用自動塊格式 <輸入> 或 }

    "java.format.onType.enabled": true
    

    默認值:true

  • java.codeGeneration.hashCodeEquals.useJava7Objects

    作用

    • 使用 Objects.hash 和 Objects.equals 時生成生成 hashCode 和 equals methods
    • 此設置僅適用於Java 7及更高版本
    "java.codeGeneration.hashCodeEquals.useJava7Objects": false
    

    默認值:false

  • java.codeGeneration.hashCodeEquals.useInstanceof

    作用

    在生成hashCode和equals方法時,使用 instanceof 比較類型

    "java.codeGeneration.hashCodeEquals.useInstanceof": false
    

    默認值:false

  • java.codeGeneration.useBlocks

    作用

    生成方法時,在「if」語句中使用塊

    "java.codeGeneration.useBlocks": false
    

    默認值:false

  • java.codeGeneration.generateComments

    作用

    生成方法時生成方法注釋

    "java.codeGeneration.generateComments": false
    

    默認值:false

  • java.codeGeneration.toString.template

    作用

    用於生成toString方法的模板

    "java.codeGeneration.toString.template": "${object.className} [${member.name()}=${member.value}, ${otherMembers}]"
    

    默認值:${object.className} [${member.name()}=${member.value}, ${otherMembers}]

  • java.codeGeneration.toString.codeStyle

    作用

    生成 toString 方法的程式碼風格

    "java.codeGeneration.toString.codeStyle": "STRING_CONCATENATION"
    

    默認值:STRING_CONCATENATION

  • java.codeGeneration.toString.skipNullValues

    作用

    生成toString方法時跳過空值

    "java.codeGeneration.toString.skipNullValues": false
    

    默認值:false

  • java.codeGeneration.toString.listArrayContents

    作用

    列出數組的內容,而不是使用本地toString()

    "java.codeGeneration.toString.listArrayContents": true
    

    默認值:true

  • java.codeGeneration.toString.limitElements

    作用

    • 限制要列出的數組/集合/映射中的項目數
    • 如果為 0 則列出所有項目
    "java.codeGeneration.toString.limitElements": 0
    

    默認值:0

  • java.codeGeneration.insertionLocation

    作用

    指定源操作生成的程式碼的插入位置

    • afterCursor: 在游標所在的成員後面插入生成的程式碼
    • beforeCursor: 在游標所在成員之前插入生成的程式碼
    • lastMember: 插入生成的程式碼作為目標類型的最後一個成員
    "java.codeGeneration.insertionLocation": "afterCursor"
    

    默認值:afterCursor

  • java.selectionRange.enabled

    作用

    • 啟用/禁用對Java的智慧選擇支援
    • 禁用此選項不會影響VS程式碼內置的基於單詞和基於括弧的智慧選擇
    "java.selectionRange.enabled": true
    

    默認值:true

  • java.showBuildStatusOnStart.enabled

    作用

    啟動時自動顯示生成狀態

    • notification:通過進度通知顯示構建狀態
    • terminal:通過終端顯示構建狀態
    • off:不顯示任何構建狀態

    為了向後兼容,此設置還接受布爾值,其中true與notification和false具有相同含義off

    "java.showBuildStatusOnStart.enabled": `notification`
    

    默認值:notification

  • java.configuration.runtimes

    作用

    將Java執行環境映射到本地JDK

    "java.configuration.runtimes": 
    

    默認值:``

  • java.server.launchMode

    作用

    Java擴展的啟動模式

    • Standard:提供完整的功能,如智慧感知、重構、構建、Maven/Gradle 支援等...
    • LightWeight:以較低的啟動成本啟動語法伺服器。僅提供大綱、導航、javadoc、語法錯誤等語法功能。輕量級模式不會載入第三方擴展,如java test runner、java debugger等。
    • Hybrid:提供具有更好響應能力的完整功能。它啟動一個標準語言伺服器和一個輔助語法伺服器。語法伺服器提供語法功能,直到標準伺服器準備好。標準伺服器完全準備好後,語法伺服器將自動關閉
    "java.server.launchMode": "Hybrid"
    

    默認值:Hybrid

  • java.sources.organizeImports.starThreshold

    作用

    指定在使用star-import之前添加的導入數

    "java.sources.organizeImports.starThreshold": 99
    

    默認值:99

  • java.sources.organizeImports.staticStarThreshold

    作用

    指定在使用star-import之前添加的靜態導入數

    "java.sources.organizeImports.staticStarThreshold": 99
    

    默認值:99

  • java.imports.gradle.wrapper.checksums

    作用

    定義Gradle包裝的允許/不允許SHA-256校驗和

    "java.imports.gradle.wrapper.checksums": 
    

    默認值:``

  • java.project.importOnFirstTimeStartup

    作用

    指定首次以(Hybrid)混合模式
    支援的值是

    • disabled(從不導入)
    • interactive(要求導入或不導入)
    • automatic(總是導入)
    "java.project.importOnFirstTimeStartup": "automatic"
    

    默認值:automatic

  • java.project.importHint

    作用

    啟動時跳過Java項目導入時,啟用/禁用伺服器模式切換資訊

    "java.project.importHint": true
    

    默認值:true

  • java.project.resourceFilters

    作用

    • 不讓Java語言伺服器刷新文件和文件夾,這可以提高整體性能
    • ["node_modules",".git"] 將排除所有名為 node_modules or .git 的文件和文件夾
    "java.project.resourceFilters": "node_modules,.git"
    

    默認值:node_modules,.git

  • java.templates.fileHeader

    作用

    • 指定新Java文件的文件頭注釋
    • 支援使用字元串數組配置多行注釋,並使用${variable}引用預定義變數
    "java.templates.fileHeader": 
    

    默認值:``

  • java.templates.typeComment

    作用

    • 指定新Java類型的類型注釋
    • 支援使用字元串數組配置多行注釋,並使用${variable}引用預定義變數
    "java.templates.typeComment": 
    

    默認值:``

  • java.references.includeAccessors

    作用

    在查找引用時包括getter、setter和builder/constructor

    "java.references.includeAccessors": true
    

    默認值:true

  • java.references.includeDecompiledSources

    作用

    在查找引用時包括反編譯的源程式碼

    "java.references.includeDecompiledSources": true
    

    默認值:true

  • java.typeHierarchy.lazyLoad

    作用

    • 啟用/禁用延遲載入類型層次結構中的內容
    • 延遲載入可以節省大量載入時間,但每個類型都應該手動擴展以載入其內容
    "java.typeHierarchy.lazyLoad": false
    

    默認值:false

  • java.settings.url

    作用

    指定工作區Java設置的url或文件路徑。請參見設置全局首選項

    "java.settings.url": null
    

    默認值:null

  • java.symbols.includeSourceMethodDeclarations

    作用

    在符號搜索中包含源文件中的方法聲明

    "java.symbols.includeSourceMethodDeclarations": false
    

    默認值:false

  • java.quickfix.showAt

    作用

    在問題或行級別顯示快速修復

    "java.quickfix.showAt": "line"
    

    默認值:line

命令

  • java.server.mode.switch

    切換到標準模式

  • java.projectConfiguration.update

    更新項目

  • java.project.import

    將Java項目導入工作區

  • java.open.serverLog

    打開Java語言伺服器日誌文件

  • java.open.clientLog

    打開Java擴展日誌文件

  • java.open.logs

    打開所有日誌文件

  • java.workspace.compile

    強制Java編譯

  • java.open.formatter.settings

    打開Java格式化程式設置

  • java.clean.workspace

    清理Java語言伺服器工作區

  • java.project.updateSourceAttachment

    Attach Source

  • java.project.addToSourcePath

    將文件夾添加到Java源路徑

  • java.project.removeFromSourcePath

    從Java源路徑中刪除文件夾

  • java.project.listSourcePaths

    列出所有Java源路徑

  • java.show.server.task.status

    顯示建立工作狀態

  • java.action.navigateToSuperImplementation

    轉到實現該方法的類文件的父文件

  • java.action.showTypeHierarchy

    顯示類型層次結構

  • java.action.showClassHierarchy

    顯示類層次結構

  • java.action.showSupertypeHierarchy

    顯示超類型層次結構

  • java.action.showSubtypeHierarchy

    顯示子類型層次結構

  • java.action.changeBaseType

    基於this類型

  • java.action.clipboardPasteAction

    導入所有需要導入的類

    快捷鍵:Ctrl + Shift + V

設置的使用

如果只是新手使用Language Support for Java(TM) by Red Hat拓展的LightWeight【輕量級模式】就夠了

Language Support for Java(TM) by Red Hat拓展默認是Hybrid【混合模式】

  • 在你的工作目錄(如果不懂先學一下這個概念)

    比如有一個目錄(myProject)【隨便】

    在這個目錄下建一個.vscode目錄

    • 在.vscode中是專門添加一些配置文件【會覆蓋你對VScode的一些設置】
    • 文件名必須是 .vscode

    在 .vscode 目錄新建 settings.json文件

    配置就在 settings.json文件其中添加,上面的選項根據自身需求添加即可

  • 1示例(使用拓展的LightWeight模式):

    {
        "java.server.launchMode": "LightWeight"
    }
    
  • 2示例(使用混合模式,打開文件夾時不想導入 Java 項目)

    {
        "java.server.launchMode": "LightWeight",
        "java.project.importOnFirstTimeStartup": "disabled"
    }
    
  • 多設置就是示例2,以此類推

    {
        選項: 值,
        選項: 值,
        ...
        選項: 值
    }
    
  • 選項和值在上面都有自身需求添加即可

命令的使用

比較複雜細學官方文檔:
//code.visualstudio.com/api

粗講:

能快捷鍵調用的

  • Shift + Alt + U :更新項目
  • Shift + Alt + B :強制Java編譯【不建議使用】
  • Ctrl + Shift + V : 導入所有需要導入的類【學習Java新手別用】

自己動手,豐衣足食