0

0

VSCode怎么运行Jar包_VSCodeJava项目打包与执行JAR教程

蓮花仙者

蓮花仙者

发布时间:2025-08-27 14:26:01

|

914人浏览过

|

来源于php中文网

原创

在VSCode中运行JAR包需先通过Maven或Gradle构建生成可执行JAR,再在终端使用java -jar命令运行;VSCode通过Java Extension Pack提供代码编辑、调试和构建集成支持,简化项目管理与胖JAR生成流程。

vscode怎么运行jar包_vscodejava项目打包与执行jar教程

在VSCode里运行JAR包,其实更多的是指利用VSCode这个强大的开发环境来构建你的Java项目,最终生成一个可执行的JAR文件,然后通过系统的Java运行时环境(JRE)在终端中执行它。VSCode本身不会像运行

.java
文件那样“直接”在编辑器内部启动一个JAR包,它扮演的角色是你的代码编辑器、构建工具的集成者,以及问题排查的助手。


对于VSCode中的Java项目,要实现打包并执行JAR,我们通常遵循一套行之有效的流程。这不仅关乎技术操作,更是一种对项目生命周期管理的理解。

首先,确保你的VSCode环境已为Java开发做好准备。这意味着你需要安装Java Extension Pack,它包含了语言支持、调试器、Maven/Gradle等核心组件。没有这些,就像厨师没有刀具,寸步难行。

接下来,无论是新建一个Maven或Gradle项目,还是导入现有项目,VSCode都会通过其扩展为你提供强大的支持。以Maven为例,你的项目结构中会有一个

pom.xml
文件,这是项目的“基因图谱”,定义了依赖、构建插件等一切。

立即学习Java免费学习笔记(深入)”;

假设你有一个简单的Java应用,入口点在

src/main/java/com/example/Main.java

package com.example;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello from a JAR package!");
        if (args.length > 0) {
            System.out.println("Received argument: " + args[0]);
        }
    }
}

要把它变成一个可运行的JAR,我们需要配置

pom.xml
。最常见的方式是使用
maven-jar-plugin
或更强大的
maven-shade-plugin
(用于生成包含所有依赖的“胖JAR”)。

一个基础的

pom.xml
配置片段,用于生成可执行JAR:


    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
            
                1.8
                1.8
            
        
        
            org.apache.maven.plugins
            maven-jar-plugin
            3.2.0
            
                
                    
                        true
                        com.example.Main 
                    
                
            
        
    

在VSCode中,打开集成终端(`Ctrl+``),导航到你的项目根目录,然后执行Maven的打包命令:

mvn clean package

这个命令会清理之前的构建产物,然后编译你的代码,并将结果打包成JAR文件。成功后,你会在项目的

target/
目录下找到生成的JAR文件,例如
your-project-name-1.0-SNAPSHOT.jar

有了JAR文件,就可以在终端中运行它了。同样在终端中,执行:

java -jar target/your-project-name-1.0-SNAPSHOT.jar

如果你需要传递参数,就像这样:

java -jar target/your-project-name-1.0-SNAPSHOT.jar "World"

这样,你的Java应用就通过JAR包的形式成功运行起来了。整个过程,VSCode是你的得力助手,但最终的执行者,依然是底层的Java运行时环境。


运行JAR包时常见的错误及其诊断方法

在运行JAR包的过程中,我们总会遇到一些意料之外的问题,这很正常。我个人就没少踩坑,尤其是在处理依赖和主类配置的时候。理解这些错误背后的逻辑,远比记住解决方案本身更重要。

最常见的一个问题是

NoClassDefFoundError
ClassNotFoundException
。这通常意味着你的JAR包在运行时找不到它所依赖的某个类。想象一下,你打包了一个应用,但忘了把应用需要的“工具箱”一起带上。

  • 诊断:首先,检查你的JAR是否是“胖JAR”(Fat JAR),即包含了所有第三方依赖。如果不是,你需要确保所有依赖的JAR都在运行时的
    classpath
    中。简单JAR包的运行命令会更复杂一些,需要手动指定
    classpath
    java -cp "lib/*:your-project.jar" com.example.Main
    (Linux/macOS)或
    java -cp "lib/*;your-project.jar" com.example.Main
    (Windows)。
  • 解决方案:对于大多数应用,生成一个包含所有依赖的胖JAR是更简便且推荐的做法,这避免了复杂的
    classpath
    配置。

另一个常见错误是

Error: Main method not found in class com.example.Main, please define the main method as: public static void main(String[] args)
。这表明Java虚拟机找不到你的程序入口。

  • 诊断:检查你的
    MANIFEST.MF
    文件(位于JAR包内的
    META-INF/
    目录),确认
    Main-Class
    属性是否正确指向了你的主类。这个文件是在打包时根据你的构建配置生成的。
  • 解决方案:仔细核对
    pom.xml
    (或
    build.gradle
    )中
    mainClass
    的配置,确保包名和类名完全匹配,包括大小写。有时候,一个简单的拼写错误就能让你抓狂半天。

还有一种情况是,程序运行起来了,但行为异常,或者报一些奇怪的运行时错误。

  • 诊断:这可能是JDK/JRE版本不匹配造成的。比如,你用JDK 17编译的代码,却试图在JRE 8上运行,可能会遇到一些兼容性问题。
  • 解决方案:确保编译和运行的Java版本一致,或者至少运行环境的版本不低于编译环境。通过
    java -version
    javac -version
    可以检查当前环境的Java版本。

有时候,JAR文件本身可能在传输或下载过程中损坏,导致无法运行。

Napkin AI
Napkin AI

Napkin AI 可以将您的文本转换为图表、流程图、信息图、思维导图视觉效果,以便快速有效地分享您的想法。

下载
  • 诊断:尝试重新打包,或者如果JAR是从外部获取的,重新下载一份。
  • 解决方案:确保文件完整性。

最后,权限问题。在某些操作系统或受限环境中,你可能没有执行JAR文件的权限。

  • 诊断:检查文件权限,尤其是当你在非标准路径下运行JAR时。
  • 解决方案:使用
    chmod +x your-project.jar
    (Linux/macOS)赋予执行权限,尽管
    java -jar
    命令通常不直接需要JAR文件本身有执行权限,但某些脚本或打包方式可能会依赖此。

VSCode扩展如何简化Java项目管理与JAR创建流程?

VSCode的Java生态圈,可以说做得相当出色,它极大地简化了从代码编写到JAR包生成的整个过程。我个人觉得,如果没有这些扩展,在VSCode里搞Java开发会是件很痛苦的事情,它让VSCode从一个轻量级编辑器蜕变成了一个功能强大的IDE。

首先,Java Extension Pack是核心。它包含了:

  • Language Support for Java™ by Red Hat:提供了智能的代码补全(IntelliSense)、错误检查、重构、代码导航等功能。这让编写Java代码变得非常流畅,就像拥有一个随时为你纠正语法错误和提供建议的智能助手。
  • Debugger for Java:强大的调试功能,你可以在代码中设置断点,单步执行,查看变量状态,这对于排查运行时问题至关重要。你可以在打包前,先在VSCode里把代码调试好,确保逻辑无误。
  • Maven for JavaGradle for Java:这两个扩展是与构建工具集成的关键。它们能识别你的
    pom.xml
    build.gradle
    文件,并在VSCode的侧边栏提供一个直观的界面来管理项目依赖、执行Maven/Gradle生命周期任务(比如
    clean
    compile
    package
    )。你不需要记住所有Maven命令,点几下鼠标就能完成大部分操作,或者直接在集成终端里输入命令,VSCode会提供智能提示。

通过这些扩展,VSCode将原本分散的步骤整合在一起:

  1. 项目创建与导入:你可以直接在VSCode中通过命令面板创建Maven或Gradle项目,它会为你生成基础的项目骨架。导入现有项目也同样便捷,VSCode会自动识别并加载项目结构和依赖。
  2. 依赖管理:在
    pom.xml
    build.gradle
    中添加或修改依赖时,VSCode会提供自动补全和版本建议。它还能在后台自动下载和管理这些依赖,确保你的项目环境始终是最新的。
  3. 代码编写与重构:强大的代码分析能力能实时发现潜在问题,并提供快速修复建议。重构功能(如重命名、提取方法)也让代码维护变得轻松。
  4. 构建流程的集成:这是最直接简化JAR创建的部分。在VSCode的Maven或Gradle视图中,你可以直接点击“package”任务来生成JAR文件。如果你喜欢命令行,集成终端也完美支持,并且能高亮显示构建过程中的错误和警告。这种无缝衔接,大大减少了在不同工具之间切换的摩擦。

可以说,VSCode的Java扩展将复杂的Java开发流程模块化、可视化,让开发者能够更专注于业务逻辑的实现,而不是被工具链的繁琐配置所困扰。对我而言,这种集成度是选择VSCode进行Java开发的重要原因之一。


在VSCode中如何构建包含所有依赖的“胖JAR”(Fat JAR)?

构建一个包含所有依赖的“胖JAR”(也常被称为“uber JAR”或“executable JAR”),是Java应用部署中非常常见的需求。它的核心优势在于自包含性:你只需要一个JAR文件,就能在任何安装了Java运行时环境的机器上运行你的应用,无需手动管理复杂的

classpath
或额外分发依赖库。这对于简化部署流程,尤其是在容器化或微服务场景下,简直是福音。

在VSCode环境中,我们主要通过配置项目的构建工具来实现这一点。对于Maven项目,最常用的插件是

maven-shade-plugin
maven-assembly-plugin
。我个人更偏爱
maven-shade-plugin
,因为它在处理依赖冲突和重命名包方面提供了更细致的控制。

以下是一个使用

maven-shade-plugin
来构建胖JAR的
pom.xml
配置示例:


    
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.8.1
            
                1.8 
                1.8 
            
        

        
        
            org.apache.maven.plugins
            maven-shade-plugin
            3.2.4 
            
                
                    package 
                    
                        shade
                    
                    
                        
                            
                            
                                com.example.Main 
                            
                            
                            
                        
                        
                        
                    
                
            
        
    

配置解析:

  • maven-compiler-plugin
    :这是标准配置,确保你的代码能被正确编译到目标Java版本。
  • maven-shade-plugin
    • executions
      :定义了插件的执行阶段和目标。
      package
      阶段是Maven构建生命周期中的一个标准阶段,
      shade
      目标就是执行打包操作。
    • transformers
      :这是
      shade
      插件的核心。
      ManifestResourceTransformer
      用于修改JAR的
      META-INF/MANIFEST.MF
      文件,最重要的是在这里指定
      mainClass
      。没有它,Java虚拟机就不知道从哪里开始执行你的应用。
      ServicesResourceTransformer
      则用于合并不同依赖中可能存在的
      META-INF/services
      文件,避免冲突。
    • filters
      :你可以用它来排除一些不需要打包进去的文件,比如签名文件(
      *.SF
      ,
      *.DSA
      ,
      *.RSA
      ),这些文件在合并JAR时可能会导致问题,或者仅仅是为了减小最终JAR的大小。

构建流程:

  1. 在VSCode中,将上述配置添加到你的

    pom.xml
    文件的
    标签内。

  2. 保存

    pom.xml

  3. 打开VSCode的集成终端(`Ctrl+``)。

  4. 在项目根目录执行Maven打包命令:

    mvn clean package

执行成功后,你会在

target/
目录下找到两个JAR文件:一个是普通的JAR(例如
your-project-name-1.0-SNAPSHOT.jar
),另一个就是由
shade
插件生成的胖JAR,通常命名为
your-project-name-1.0-SNAPSHOT.jar
(如果未配置
finalName
)或者
original-your-project-name-1.0-SNAPSHOT.jar
(如果
shade
插件将原始JAR重命名了)。最直接的方法是查看
target/
目录中哪个JAR文件体积最大,那个通常就是你的胖JAR。

运行胖JAR:

java -jar target/your-project-name-1.0-SNAPSHOT.jar

这个命令会直接运行你的应用,因为胖JAR已经包含了所有运行时所需的依赖和主类信息。这种方式极大地简化了部署和分发,避免了依赖地狱。对于Gradle项目,你可以使用

shadowJar
插件来实现类似的功能,概念是相通的。选择哪种方式,取决于你的项目是基于Maven还是Gradle。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

825

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

724

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

731

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

396

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

445

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

429

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16881

2023.08.03

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

74

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.5万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号