Java中启动jar包的方式汇总

 更新时间:2025年09月16日 10:05:46   作者:咖啡有糖了  
Java 命令执行 JAR 包是一种常见的应用场景,在实际开发中,我们经常需要执行 JAR 包文件,那么,如何使用 Java 命令执行 JAR 包呢?本文将为大家介绍八种不同的方法,需要的朋友可以参考下

1. 标准启动(指定 -jar 参数)

java -jar your-application.jar

要求:JAR 的 MANIFEST.MF 文件中必须包含 Main-Class 属性。

特点:自动识别入口类,忽略 -classpath 参数。

2. 显式指定主类(无需 MANIFEST.MF)

java -cp your-application.jar com.example.MainClass

适用场景:

JAR 未配置 Main-Class。
需手动指定入口类(覆盖 MANIFEST.MF 中的定义)。
依赖管理:若需添加外部库,用分号(Windows)或冒号(Linux/Mac)分隔:

Windows
java -cp "lib/*;your-application.jar" com.example.MainClass

Linux/Mac
java -cp "lib/*:your-application.jar" com.example.MainClass

3. 添加 JVM 参数

java -Xmx1024m -Dconfig.file=/path/config.conf -jar your-application.jar

常用参数:

-Xmx1024m:设置最大堆内存为 1024MB。
-Dproperty=value:设置系统属性(如配置文件路径)。

4. 后台运行(Linux/Mac)

nohup java -jar your-application.jar > app.log 2>&1 &

作用:

nohup:忽略挂断信号(退出终端后继续运行)。

app.log:重定向标准输出到文件。
2>&1:将错误输出合并到标准输出。
&:后台运行。

5. Windows 后台运行

start /B javaw -jar your-application.jar > app.log 2>&1

注意:

javaw.exe 无控制台窗口(适合 GUI 应用)。

日志需手动重定向(如 > app.log)。

6. 模块化启动(Java 9+)

java --module-path libs --module com.example/com.example.MainClass

适用场景:项目使用 Java 模块系统(module-info.java)。

7. 通过脚本封装

创建启动脚本(如 start.sh 或 start.bat):

 Linux/Mac(start.sh)
java -Xms256m -Xmx1024m -jar /path/to/your-application.jar
@echo off
java -Xms256m -Xmx1024m -jar C:\path\to\your-application.jar

8. 使用第三方工具

jpackage (JDK 14+):打包成原生安装包(含启动器)。

Spring Boot 项目

mvn spring-boot:run # 直接运行(无需先打包)

系统服务:

Linux:通过 systemd 托管。

Windows:封装成服务(如使用 WinSW)。

常见问题解决

No main manifest attribute:JAR 缺失 Main-Class,需用方式 2 显式指定主类。

依赖冲突:确保所有依赖 JAR 在 -cp 路径中(使用 lib/* 通配符)。

权限问题(Linux):为脚本添加执行权限:

chmod +x start.sh

根据需求选择合适的方式,通常 java -jar 或 -cp 是最常用的方法。

到此这篇关于Java中启动jar包的方式汇总的文章就介绍到这了,更多相关Java启动jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC源码解析之消息转换器HttpMessageConverter

    SpringMVC源码解析之消息转换器HttpMessageConverter

    本篇文章主要介绍了SpringMVC源码解析之消息转换器HttpMessageConverter ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 简单介绍java中equals以及==的用法

    简单介绍java中equals以及==的用法

    这篇文章主要介绍了简单介绍java中equals以及==的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Springboot整合JwtHelper实现非对称加密

    Springboot整合JwtHelper实现非对称加密

    本文主要介绍了Springboot整合JwtHelper实现非对称加密,主要介绍两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Spring BeanFactory工厂使用教程

    Spring BeanFactory工厂使用教程

    Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术
    2023-02-02
  • Java并发之BlockingQueue的使用

    Java并发之BlockingQueue的使用

    这篇文章主要介绍了Java并发之BlockingQueue的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker环境下Spring Boot应用内存飙升分析与解决场景分析

    Docker环境下Spring Boot应用内存飙升分析与解决场景分析

    当运行一个Spring Boot项目时,如果未设置JVM内存参数,Spring Boot默认会采用JVM自身默认的配置策略,接下来通过本文给大家介绍Docker环境下Spring Boot应用内存飙升分析与解决方法,需要的朋友参考下吧
    2021-08-08
  • 浅谈选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    浅谈选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    下面小编就为大家带来一篇浅谈选择、冒泡排序,二分查找法以及一些for循环的灵活运用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot对接AWS S3实现上传和查询

    SpringBoot对接AWS S3实现上传和查询

    AWS S3是亚马逊提供的一种对象存储服务,旨在提供可扩展、高可用性和安全的数据存储解决方案,本文我们就来看看SpringBoot如何对接AWS S3实现上传和查询吧
    2025-02-02
  • java获取nvidia显卡信息的实现示例

    java获取nvidia显卡信息的实现示例

    现在的需求是要获取nvidia显卡的使用情况,本文主要介绍了java获取nvidia显卡信息的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 使用@Value注入map、List,yaml格式方式

    使用@Value注入map、List,yaml格式方式

    这篇文章主要介绍了使用@Value注入map、List,yaml格式方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论