VSCode 打造 Java 开发工具

news/2025/2/22 23:39:02/文章来源:https://www.cnblogs.com/cyrushuang/p/18731652

Extension Pack for Java

Language Support for Java™ by Red Hat

Startup

配置项 作用
"java.jdt.ls.java.home": "" 指定 Eclipse JDT Language Server 的 java 版本,负责提供代码补全、导航、重构、语法检查、重构、格式化等等功能。此项配置依赖 jdk 版本为 11(包含) 以上
比如语法补全,如果这项配置的是 jdk17,如果项目用 jdk8(pom指定),还是会提示jdk8的语法
"java.jdt.ls.vmargs": "" Eclipse JDT Language Server 的 jvm 参数配置(最大最小堆内存,指定垃圾收集器等)
"java.server.launchMode": "Hybrid" Eclipse JDT Language Server 的启动模式:HybridLightWeightStandard
Hybrid:默认值,适合大多数场景。它会根据项目的大小和复杂度自动选择最佳启动方式
LightWeight:果你的项目较小,且希望快速启动
Standard:如果你的项目非常大,且需要更高的稳定性
"java.configuration.workspaceCacheLimit": 90 该配置项用于设置工作区缓存的最大内存(java.jdt.ls.vmargs)占用百分比
工作区缓存用于存储项目的元数据(如类路径、依赖关系等),影响快代码导航、补全等功能的速度
"java.sharedIndexes.enabled": "auto" 是否启用 共享索引 功能:autofalsetrue
共享索引保存的是项目的元数据(如类路径、符号索引等)
true:项目比较大,依赖和引用很多
false:小型项目,不复杂
auto:根据项目规模和复杂度自动决定是否启用共享索引
"java.sharedIndexes.location": "" 共享索引存储的位置,mac 默认是 ~/.shared-indexes
"java.jdt.ls.lombokSupport.enabled": true 是否启用 lombok,这个估计必须打开,多人开发项目时你不用别人也会用
"java.jdt.ls.protobufSupport.enabled": true 启用或禁用 Protobuf 支持(Google 开发的一种数据序列化格式)
如果启用,插件会识别 .proto 文件,并为其提供语法高亮、代码补全、导航等功能
"java.jdt.ls.androidSupport.enabled": "auto" 用于启用或禁用 Android 支持。如果启用,插件会识别 Android 项目,并为其提供特定的语言支持功能
"java.jdt.ls.javac.enabled": "off" 是否启用 javac 编译器。如果禁用,使用 Eclipse JDT(ECJ)编译器
javac 是 Oracle 官方编译器兼容性好、速度慢、需要 JDK23+
ECJ 是 Eclipse 开发编译器,优势是编译速度快、但是可能不兼容高版本的 jdk 语法
"java.trace.server": "off"
"redhat.telemetry.enabled": null 是否启用 遥测(Telemetry) 功能。遥测功能用于收集插件的使用数据,以帮助开发团队改进插件

Project Import/Update

配置项 作用
"java.import.projectSelection": "automatic" 用于设置项目导入的模式。它决定了插件在打开工作区时是否自动检测和导入项目,或者是否需要手动选择项目
"java.configuration.updateBuildConfiguration": "interactive" 用于设置项目构建配置的更新模式。 它决定了插件在检测到项目配置文件发生变化时,是否自动更新构建配置,或者是否需要用户确认。
"automatic":自动更新构建配置,无需用户确认
"interactive"(默认值):在更新构建配置前,提示用户确认
"disabled":禁用自动更新构建配置功能。
"java.import.exclusions": [
"/node_modules/",
"/.metadata/",
"/archetype-resources/",
"/META-INF/maven/"
]
在导入 Java 项目时需要 排除的目录或文件。通过配置该项,可以避免插件扫描和导入不必要的文件或目录,从而提升项目导入的性能
"java.import.generatesMetadataFilesAtProjectRoot": false 用于控制是否在项目根目录生成元数据文件
true:插件会在项目根目录生成 .classpath.project 等文件
false:如果禁用,插件不会生成这些文件
"java.project.encoding": "ignore" 处理项目中的 文件编码,默认的 ignore 表示不处理。如果配置成 UTF-8 就会把所有文件的文件编码转成 UTF-8
"java.project.importHint": true 于控制是否显示 项目导入提示。这个配置项决定了插件在检测到未导入的项目时,是否提示用户导入项目(第一次打开还未完全导入,强制退出,第二次进来时这个项目就是未导入的项目)
"java.project.importOnFirstTimeStartup": "automatic" 首次启动插件时 如何导入 Java 项目。这个配置项决定了插件在第一次运行时是否自动检测并导入项目,或者是否需要用户手动操作
"automatic"(默认值):自动检测并导入工作区中的所有 Java 项目。
"manual":在首次启动时,提示用户手动选择要导入的项目。
"disabled":在首次启动时,不自动导入任何项目。
"java.project.resourceFilters": [
"node_modules",
"\.git"
]
指定的目录和文件不会加载为静态资源
"java.showBuildStatusOnStart.enabled": "notification" 用于控制 项目启动时是否显示构建状态。这个配置项决定了插件在项目启动时,如何通知用户项目的构建状态(如成功、失败或警告)
"notification"(默认值):在通知栏显示构建状态
"statusbar":在状态栏显示构建状态
"off":不显示构建状态

Unmanaged Folder

配置项 作用
"java.project.sourcePaths": [] 指定 Java 项目的 源代码路径。idea 中右键文件夹 make as source
"java.project.outputPath": "" 指定 Java 项目的 输出路径(即编译后的 .class 文件的存放目录)
"java.project.referencedLibraries": [
"lib/**/*.jar"
]
手动指定 Java 项目的 引用库(即项目依赖的外部 JAR 文件或目录)

配置项 java.project.outputPath 是存放 java 文件 编译 后的 class 文件(中间产物

Project Manager For Java 插件的配置项 java.project.exportJar.targetPath` 是 打包 后生成的可执行的 jar (最终产物

Maven

配置项 作用
"java.import.maven.enabled": true 是否启用 Maven 项目支持。如果启用,插件会自动检测工作区中的 Maven 项目(即包含 pom.xml 文件的项目),并导入其依赖和配置
"java.import.maven.offline.enabled": false 否启用 Maven 的离线模式。
fasle:不启用离线模式,也就是启用在线模式
true:启用离线模式,永不拉取远程 pom 依赖,只使用本地缓存的依赖
"java.import.maven.disableTestClasspathFlag": false 是否禁用 Maven 在导入时为测试类(test classes)指定单独的类路径
false(默认):VS Code 会遵循 Maven 的标准行为,为测试代码使用单独的类路径,以确保生产代码与测试代码的依赖隔离。
true:禁用测试类路径标志,测试类与主代码共享类路径。这通常不是推荐的做法,因为可能会导致依赖混乱。
"java.maven.downloadSources": false 指定是否在导入 Maven 项目时下载项目依赖的源代码,(配置为 false 表示不下载,一般需要才下载)
"java.maven.updateSnapshots": false 控制是否在导入或构建 Maven 项目时自动更新 SNAPSHOT 版本的依赖
SNAPSHOT 版本是 Maven 中表示正在开发中的版本,通常这些版本会经常变化
false:在导入或构建项目时不会自动检查或更新 SNAPSHOT 版本的依赖
true:则会自动检查和下载最新的 SNAPSHOT 版本
"java.configuration.maven.userSettings": null 用户级别的 maven setting 文件
"java.configuration.maven.globalSettings": null 全局的 maven setting 文件
"java.configuration.maven.notCoveredPluginExecutionSeverity": "warning" "warning":你可以在不打断构建的情况下,得到关于插件未绑定生命周期阶段的警告,提醒你检查配置
"error":如果你希望更严格控制构建生命周期,可以设置为错误,确保所有插件都正确绑定到生命周期阶段
"ignore"
:如果你不关心插件是否绑定到生命周期阶段,可以选择忽略相关的警告或错误
"java.configuration.maven.defaultMojoExecutionAction": "ignore" 控制了 Maven 插件的 Mojo 执行默认行为
"execute":如果 Mojo 没有绑定到任何生命周期阶段,Maven 会默认执行这个 Mojo
"ignore":如果 Mojo 没有绑定到任何生命周期阶段,Maven 会忽略这个 Mojo,不会执行它
"java.configuration.maven.lifecycleMappings": null 使用默认的 Maven 生命周期映射

Gradle

Build

配置项 作用
"java.autobuild.enabled": true 启用或禁用自动构建功能
true(默认值):在文件保存时自动构建项目
false:禁用该功能
也会生成 class 文件,但不会重新加载到 JVM,不具有 jrebel 的功能
"java.maxConcurrentBuilds": 1 用于设置最大并发构建数(多个项目同时构建)
"java.settings.url": null 用于指定一个 JSON 文件的 URL,该文件包含 Java 构建相关的配置
"java.compile.nullAnalysis.mode": "interactive" 空指针分析
interactive:开启,并且实时在代码编辑时给予反馈
automatic:开启,但不实时反馈,在保存和构建时给予反馈
disable:关闭(感觉可以关闭,因为这个配置影响的是下面3个空指针检查的,下面这3个说实话没啥用)
"java.compile.nullAnalysis.nonnull": [
"javax.annotation.Nonnull",
"org.eclipse.jdt.annotation.NonNull",
"org.springframework.lang.NonNull"
]
java.compile.nullAnalysis.mode 不是 disable 时当前配置生效
指定用于标识 非空(Non-null) 类型的注解。标注了这些注解的方法参数、属性、返回值在使用时如果为空会给出提示
"java.compile.nullAnalysis.nonnullbydefault": [
"javax.annotation.ParametersAreNonnullByDefault",
"org.eclipse.jdt.annotation.NonNullByDefault",
"org.springframework.lang.NonNullApi"
]
java.compile.nullAnalysis.mode 不是 disable 时当前配置生效
该配置项用于指定 默认非空 的注解类型。当启用这些注解时,整个包或类中的方法参数、返回值等会默认被视为非空,除非显式标注了 @Nullable,常用于类或包级别,表示该范围内的所有元素默认是非空的
"java.compile.nullAnalysis.nullable": [
"javax.annotation.Nullable",
"org.eclipse.jdt.annotation.Nullable",
"org.springframework.lang.Nullable"
]
java.compile.nullAnalysis.mode 不是 disable 时当前配置生效
指定用于标识 可以为空(Non-null) 类型的注解(和 java.compile.nullAnalysis.nonnull 相反)
"java.errors.incompleteClasspath.severity": "warning" 控制类路径不完整问题的提示级别。可以是以下值之一
ignore: 忽略类路径不完整的问题,不显示任何提示
info: 以信息级别提示类路径不完整的问题
warning: 以警告级别提示类路径不完整的问题
error: 以错误级别提示类路径不完整的问题

Installed JDKs

配置项 作用
"java.configuration.detectJdksAtStart": true 用于启用或禁用插件启动时的 JDK 自动检测功能
"java.configuration.runtimes": [{
"name": "JavaSE-1.8",
"path": "/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home"
},
{
"name": "JavaSE-17",
"path": "/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home",
"default": true
}
]
指定 jdk 版本
java.configuration.detectJdksAtStart 为 true,java.configuration.runtimes 也制定了 jdk 时 java.configuration.runtimes 更优先

Formatting

配置项 作用
"java.format.enabled": true 是否启用 代码格式化 功能。如果启用,插件会在保存文件或手动触发时自动格式化 Java 代码
"java.format.settings.url": null 指定 代码格式化规则文件的 URL。如果不指定默认使用 Eclipse 的代码格式化规则
https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml 是 google 提供的格式化规则
"java.format.settings.profile": null 也是指定 代码格式化规则的配置文件
和上面的配置二选一即可。如果同时存在,上面的配置优先级更高
"java.format.comments.enabled": true 和上面两项类似,只不过这个配置是格式化注释的
"java.format.onType.enabled": true 是否在输入 ;}Enter 时格式化
;:格式化当前行
}:格式化括号内的部分
Enter:当前行或当前代码块

Code Completion

配置项 作用
"java.completion.enabled": true 是否启用代码补全
"java.completion.postfix.enabled": true 是否开启后缀补全功能
.for **for **(var item : myList) { ... }
.if **if **(condition) { ... }
.while while (condition) { ... }
.try try { ... } catch (Exception e) { ... }
.var var result = expression;
.return return expression;
可以通过 java.completion.postfix.templates 自定义提示补全
"java.completion.chain.enabled": false 否启用 链式代码补全(Chain Completion) 功能。链式代码补全是一种高级的代码补全方式,允许你在一个表达式中连续调用多个方法或属性
如果启用,插件会在你输入一个表达式后,自动提示该表达式可以调用的方法或属性 myList.stream().filter(...).map(...)
"java.completion.favoriteStaticMembers": [
"java.lang.System.out",
"org.junit.Assume.
",
"org.junit.jupiter.api.Assertions.*"
]
指定常用的静态成员(如 System.out),在代码补全中优先显示
比如输入 System 后,out 排在前面
"java.completion.filteredTypes": [
"java.awt.",
"com.sun.
",
"sun.",
"jdk.
",
"org.graalvm.",
"io.micrometer.shaded.
"
]
指定需要过滤的类型,这些类型不会进行提示
"java.completion.guessMethodArguments": "auto" 否在代码补全时 猜测方法参数。这个配置项决定了插件在补全方法调用时,是否自动填充可能的参数值
调用一个方法时,输入了方法名,会猜测这个方法的参数来提示
"java.completion.matchCase": "firstLetter" 用于控制代码补全时的 匹配大小写规则
"firstLetter"(默认值):仅匹配第一个字母的大小写
"off":不区分大小写
"java.completion.importOrder": [
"#",
"java",
"javax",
"org",
"com",
""
]
指定导入语句的排序规则,比如当前配置为 java 在 javax 前面
import java.lang.Integer
import javax.annotation.Resource
"java.completion.engine": "ecj" 代码补全的引擎(和编译器类似,局限性也类似)
ecj:使用 Eclipse Compiler for Java (ECJ) 作为补全引擎
javac:使用 JDK 自带的 javac 作为补全引擎
ecj 最大的好处是速度快,如果项目使用的 jdk 版本过高就使用 javac
"java.completion.collapseCompletionItems": false 候选项有相似的是否折叠,false 表示不折叠
比如一个方法,返回值、方法名、参数个数都相同,但是参数类型不同。如果折叠就显示这一个方法;如果不折叠,所有的方法都是现实
"java.completion.lazyResolveTextEdit.enabled": true 是否启用 延迟解析文本编辑(Lazy Resolve Text Edit) 功能
当选择了候选的提示项后,才做文本编辑(调整代码的格式,如缩进、空格等)
"java.completion.maxResults": 0 代码补全的最大结果数,0表示不限制数量(全都会显示)
"java.signatureHelp.description.enabled": false 当调用一个方法时,提示时要不要显示方法描述(包含 doc 等,方法的全部信息,太详细了)
"java.signatureHelp.enabled": true 当调用一个方法时,提示时要不要显示方法签名(仅显示方法名和参数)

Code Generation

配置项 作用
"java.templates.fileHeader": [
"/**",
" * Copyright (c) ${year} ${user}. All rights reserved.",
" * Created on ${date}.",
" */"
]
定义版权,在文件的第一行
"java.templates.typeComment": [
"/**",
" * ${type_name}",
" * ",
" *

This class is used to ...

",
" * ",
" * @author ${user}",
" * @version 1.0",
" * @since ${date}",
" */"
]
定义类描述,在类上
"java.codeGeneration.insertionLocation": "afterCursor" 用于设置代码生成时的插入位置
"afterCursor"(默认值):将生成的代码插入到光标之后
"beforeCursor":将生成的代码插入到光标之前
"java.codeGeneration.addFinalForNewDeclaration": "none" 用于设置是否在生成新变量声明时添加 final 关键字
"none"(默认值):不为新变量声明添加 final 关键字
"local":仅为局部变量声明添加 final 关键字
"field":仅为字段声明添加 final 关键字
"all":为所有新变量声明(包括局部变量和字段)添加 final 关键字
"java.codeGeneration.generateComments": false 是否自动生成注释
"java.codeGeneration.hashCodeEquals.useInstanceof": false 在生成 hashCode()equals() 方法时,是否使用 instanceof 关键字来检查对象类型
"java.codeGeneration.hashCodeEquals.useJava7Objects": false 是否使用 java7 的 api
true:使用 Java 7 的 Objects 类来简化 equals()hashCode() 的实现
false:不使用 Java 7 的 Objects 类,手动编写 equals()hashCode() 方法的逻辑
"java.codeGeneration.toString.codeStyle": "STRING_CONCATENATION" 自动生成 toString() 方法时字符串的连接方式
"STRING_CONCATENATION":表示在生成的 toString() 方法中使用 + 运算符来拼接字符串
"STRING_BUILDER":表示在生成的 toString() 方法中使用 StringBuilder 来拼接字符串
"STRING_BUILDER_CHAINED":StringBuilder 的链式调用,更简洁
"STRING_FORMAT":使用 String.format() 方式
"java.codeGeneration.toString.limitElements": 0 自动生成 toString() 方法时,对于集合类型字段(如 List, Set, Map 等)限制显示的元素数量。
0 时,表示不限制集合字段的元素数量,也就是说,生成的 toString() 方法会包含集合中所有的元素
2 时,集合中第三个元素开始会被省略
"java.codeGeneration.toString.listArrayContents": true 自动生成 toString() 方法时,是否包含数组或集合的内容
true(默认值):生成的 toString 方法会包含数组或集合的内容
false:生成的 toString 使用内存地址表示这个数组或集合
"java.codeGeneration.toString.skipNullValues": false 自动生成 toString() 方法时,是否不包含值为 null 的字段
"java.codeGeneration.toString.template": "${object.className} [${member.name()}=${member.value}, ${otherMembers}]" 配置 toString() 方法的生成规则
${object.className}: 当前类的名称
${member.name()}: 当前成员的名称
${member.value}: 当前成员的值
${otherMembers}: 其他成员的值
"java.codeGeneration.useBlocks": false 自动生成 toString() 方法时,是否使用代码块来格式化显示
false:在一行字符串中显示
true:会有换行
"java.edit.smartSemicolonDetection.enabled": false 换行时进行分号检测
false:禁用智能分号检测,编辑器不会自动补全分号
true:启用智能分号检测,编辑器会在代码缺少分号时自动添加

Code Action

配置项 作用
"java.cleanup.actions": [
"renameFileToType"
]
执行代码清理时要做些什么(代码清理是VS Code 的动作,右键文件 -> Source Action -> Clean Up),比如
renameFileToType:确保文件名与主类或接口名称一致
addOverride:覆盖父类或接口方法加上 @Override 注解
"java.saveActions.organizeImports": false 保存文件时,自动整理导入的包,无用的会移除
"java.sources.organizeImports.starThreshold": 99 当某个包导入的类达到 99 时转成 *
"java.sources.organizeImports.staticStarThreshold": 99 和上面一样吗,也是配置转成 * 的阈值。上面是普通导包,这里指的是静态导包
import static java.lang.Math.PI;
import static java.lang.Math.pow;

import static java.lang.Math.*;
"java.codeAction.sortMembers.avoidVolatileChanges": true 用于控制 排序类成员时是否避免不稳定的更改。这个配置项决定了插件在排序类成员(如字段、方法等)时,是否尽量避免引入不必要的更改
比如 cleanup 中配置触发的动作有可能增加代码行或删除代码行,特别是如果有代码被 volatile 修饰的话尽量不动
再比如 VS Code 中本来就有排序功能(右键文件 -> Source Action -> Sort Members)
"java.quickfix.showAt": "line" 用于设置快速修复建议的显示位置
"line"(默认值):在问题行显示快速修复建议
"problem":在问题位置显示快速修复建议
"java.refactoring.extract.interface.replace": true 用于设置将类提取为接口时是否替换原始类引用(将一个 class 抽象成一个 interface + class,其他地方如果用到了这个类,是否要用接口来接收)
AClass 类 提取未接口后变成 AInterface 和 AClass,其他地方的引用也会使用 AInterface
"java.saveActions.cleanup": true 是否启动清理动作

Code Navigation

Debug For Java

Java Debug

Maven For Java

Maven For Java

配置项 作用
"maven.dependency.enableConflictDiagnostics": "true" 是否启用 Maven 依赖冲突的诊断功能
true:开启诊断功能,当冲突或远程仓库拉取不到时会提示
false:不开启
"maven.excludedFolders": [
"/.*",
"
/node_modules",
"/target",
"
/bin",
"**/archetype-resources"
]
指定 Maven 项目中需要排除的文件夹
"maven.executable.options": "" 用于指定运行 Maven 命令时的附加命令行选项
常见选项: -D-P-T-X-q-o-f-s
比如跳过测试,传递 jvm 参数等
"maven.executable.path": "" 指定 Maven 可执行文件的路径
为空表示使用电脑默认的
如果电脑识别不到或安装了多个 maven 或者可以手动指定
mac 示例 /Users/cyrus/MyApp/maven/apache-maven-3.9.9/bin/mvn
"maven.executable.preferMavenWrapper": "true" 是否优先使用 Maven Wrapper(mvnwmvnw.cmd)来执行 Maven 命令
先了解 Maven Wrapper 的知识有助于理解这个配置的作用
"maven.explorer.projectName": "${project.name}" 设置 Maven 项目在资源管理器中的显示名称
支持变量: ${project.name}${project.artifactId}${project.version}${project.groupId}
"maven.pomfile.autoUpdateEffectivePOM": false 当修改了 POM 文件是否 自动更新有效 POM(Effective POM)
有效 POM:当前的项目对应抽象的 POM(项目的 POM、父 POM、激活的Profile、默认配置等这些组合起来才是当前项目真正的 POM)
true:自动刷新有效 POM,大项目性能不好
false:手动刷新有效 POM(pom.xml 文件上右键,选择 Update Effective POM
"maven.pomfile.globPattern": "**/pom.xml" 指定匹配 pom.xml 文件的 Glob 模式(VS Code 根据这个规则找到所有的 pom 文件来加载依赖
默认值: "**/pom.xml",即递归匹配所有目录下的 pom.xml 文件
"maven.pomfile.prefetchEffectivePom": false maven.pomfile.autoUpdateEffectivePOM 效果一致,触发时间不同
maven.pomfile.prefetchEffectivePom:打开 POM 文件时触发
maven.pomfile.autoUpdateEffectivePOM:POM 文件更改时触发
"maven.projectOpenBehavior": "Interactive" 打开 Maven 项目时的行为模式
Interactive: 交互模式。插件会提示用户选择是否加载项目
AddToWorkspace: 自动将项目添加到工作区,但不立即加载
Open: 自动打开(立即加载)
None:不执行任何操作,希望完全手动控制项目加载
"maven.settingsFile": "" maven setting 文件,默认是 ~/.m2/settings.xml
"maven.showInExplorerContextMenu": "true" 控制 Maven 项目是否在文件资源管理器(Explorer)的右键菜单中显示
比如运行 maven 命令,刷新依赖等

有效 POM 和项目的依赖不是一个东西!!!
有效 POM 决定项目的依赖,Maven For Java 的配置项决定有效 POM 的实时刷新与否
项目的依赖是 Project Mananger For Java 的配置项决定的

Project Manager For Java

Java Project Manager

配置项 作用
"java.dependency.autoRefresh": true 是否根据有效 POM 自动刷新项目的依赖
"java.dependency.packagePresentation": "flat" 依赖包在项目视图中的展示方式(类似 idea 和 eclipse 默认的包路径)
flat: 扁平结构。所有依赖包在同一层级显示,不区分层级关系
hierarchical: 层级结构。依赖包按照其层级关系显示(例如,依赖的依赖会嵌套显示)
"java.dependency.refreshDelay": 2000 达到条件后,多长时间刷新项目依赖,这里是 2 秒
"java.dependency.showMembers": false 否在依赖视图中显示依赖包的成员
false 效果:
Dependencies
├── com.example:libraryA:1.0.0
├── com.example:libraryB:1.0.0
true 效果:
Dependencies
├── com.example:libraryA:1.0.0
│ ├── com.example.ClassA
│ │ ├── method1()
│ │ ├── method2()
│ │ └── field1
│ └── com.example.ClassB
├── com.example:libraryB:1.0.0
"java.dependency.syncWithFolderExplorer": true 依赖视图和文件夹资源管理器之间的同步行为,true:同步;false:不同步
VS Code 中看依赖时编辑器中的目录层级是否和真实 jar 中一致
"java.project.explorer.showNonJavaResources": true VS Code 中看依赖时,是否显示非 Java 资源文件(只显示 java 文件还是配置文件、静态资源都显示)
true:全都显示;false:只显示 java 文件
"java.project.exportJar.targetPath": "${workspaceFolder}/${workspaceFolderBasename}.jar" 设置导出 Java 项目时生成的 JAR 文件的目标路径
项目 mvn package 命令打包后的可执行 jar 程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888227.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十五届蓝桥杯省赛

第十五届蓝桥杯省赛 1.握手问题#include <iostream> using namespace std; int main() { //划分为43,7两组 //(43*42)/2+7*43=28*43 cout<<28*43;return 0; }2.小球反弹(难)分析: 当做两个方向往返代码:/* 考点:速度分解 分解为x轴往返,y轴往返(回到左上角起…

OpenWRT安装Caddy实现WebDAV协议的NAS盘

Caddy带有WebDAV插件,可以安装在OpenWRT上,用于提供WebDAV协议的NAS服务。 Windows资源管理器,WinSCP,MAC的Finder,Android上的CX文件管理器都可以作为WebDAV的客户端。 WebDAV使用过程中可以直接打开文件,修改后保存,非常方便,感觉Samb没区别。但其使用https协议,安全…

Java17的安装

Java17的安装因为要用SpringBoot3了,Java版本要更新到17以后 安装连接:Java Archive Downloads - Java SE 17.0.12 and earlier 下载 选择对应的版本下载安装可以更改安装位置成功以后关闭就行配置环境变量 如果电脑已经安装了JDK8,但又不想卸载的同时想安装JDK17,可以如下…

linux中nano和vim用法

Linux下nano,vim使用Linux 编辑器使用指南:nano 和 vim 在 Linux 系统中,编辑文本文件是非常常见的任务。对于大多数 Linux 用户来说,nano 和 vim 是两个最常用的命令行文本编辑器。虽然它们都可以用来编辑文件,但它们的功能和使用方式有很大不同。本篇文章将介绍这两个编辑…

final关键字、Object类

1.规则 被final修饰的变量,名称都要大写,多单词的名称则需_来分隔1.修饰方法method方法已经不能被重写了,因为修饰该方法的是final2.修饰类 当一个类中所有的成员方法都不想被重写时,可以直接在类上加上final,无需再一个一个写在方法上2.object类: 是所有类的祖宗,每一个…

Java要记-持续补充中

1. ArrayList操作自定义对象进行removeAll()时,移除失效原因 由于底层最用调用的是Object的equals()方法进行比较的,比较的是地址,两个对象地址当然是不同的了,移除自然会失败。解决方案:重写equals方法。【注意重写equals方法记得也要重写hashCode方法】同时:retainAll(…

this和super--java进阶day01

1.this和super的代表super是父类的标识符,如堆内存中的标志 2.this和super的访问重点说访问构造方法,super()访问父类构造方法我们已经清楚,但是this()访问本类构造方法,我们不清楚有什么用意义 如以下情境 假设在公司制作一个系统,1.0有三位角色随着版本更新,1.1要新…

软件开发与创新课程设计第一次作业---小游戏《勇者冒险》改写

《勇者冒险》小游戏代码优化 一、项目名称与来源 题目为《勇者冒险》(原项目没有名字,是作者取的),代码来源是CSDN,链接如下: https://blog.csdn.net/zjx120307/article/details/126221342?sharetype=blog&shareId=126221342&sharerefer=APP&sharefrom=qq 本…

多周期处理器debug记录

这篇随笔记录的是从普通的多周期处理器到加入握手信号和axi-lite协议sram的处理器。 在之前的多周期处理器里,由于结构比较简单,所以我给ifu和exu的握手信号加入的是时序逻辑,idu由于只做解码,所以握手信号放在了组合逻辑里,差不多就和透传差不多。但是加入sram握手信号以…

继承内存图--java进阶 day01

主方法进栈,有new进堆堆内存中先存自己类中有的变量又因为继承了父类,所以父类中的变量也要存入 即使被私有化,依旧可以继承,只是没有权限使用!创建对象时,会调用构造方法,所以走构造方法,实参传形参.....继续走到super,访问父类的构造方法,父类构造方法进栈,形参继…

离散化学习笔记

离散化学习笔记 OP:又是一如既往的周更。。。水死了 定义离散化:将数字映射为是第几小的数,其保证数据在Hash之后仍然保持原来的全/偏序关系,能够解决:通过元素相对大小即可解决的问题。 其实本质上就是哈希的一种特殊规则而已。(离散化简化了不止亿点)目标将一堆乱序且…

java知识面试day2

1.说出java和c++的区别java是一个纯粹的面向对象语言,所有的对象都继承于java. lang.Object,C++兼容C,不但支持面向对象也支持面向过程 java有着一次编译四处运行的跨平台特性。 java不具有指针,但具有垃圾回收。 java不支持多重继承,只能通过实现多个接口去达到相同目的2.…