> 技术文档 > Java中启动jar包方式_java jar包启动

Java中启动jar包方式_java jar包启动


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

bashjava -jar your-application.jar

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

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

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

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

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

bashWindowsjava -cp \"lib/*;your-application.jar\" com.example.MainClassLinux/Macjava -cp \"lib/*:your-application.jar\" com.example.MainClass

3. 添加 JVM 参数

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

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

4. 后台运行(Linux/Mac)

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

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

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

5. Windows 后台运行

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

注意:
javaw.exe 无控制台窗口(适合 GUI 应用)。
日志需手动重定向(如 > app.log)。

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

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

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

7. 通过脚本封装

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

bash

 Linux/Mac(start.sh)java -Xms256m -Xmx1024m -jar /path/to/your-application.jar

batch

@echo offjava -Xms256m -Xmx1024m -jar C:\\path\\to\\your-application.jar

8. 使用第三方工具

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

Spring Boot Maven/Gradle 插件:

bash

Spring Boot 项目

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

Linux:通过 systemd 托管。

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

常见问题解决
No main manifest attribute:JAR 缺失 Main-Class,需用方式 2 显式指定主类。

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

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

bash
chmod +x start.sh
根据需求选择合适的方式,通常 java -jar 或 -cp 是最常用的方法。