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 是最常用的方法。