运行jar程序是Java开发中常见的操作,通过DOS命令(Windows命令行)可以方便地启动、管理和调试Java应用,以下是详细的操作步骤和注意事项,帮助您顺利运行jar程序。
前提条件:确保Java环境已配置
在运行jar程序前,必须确保系统已安装Java开发工具包(JDK)或Java运行时环境(JRE),并且环境变量配置正确,具体操作如下:
-
检查Java是否安装
打开DOS命令窗口(按Win+R
输入cmd
回车),输入以下命令:java -version
如果显示Java版本信息(如
java version "1.8.0_321"
),说明Java已安装;如果提示“不是内部或外部命令”,需重新配置环境变量。 -
配置JAVA_HOME环境变量
- 右键“此电脑”→“属性”→“高级系统设置”→“环境变量”;
- 在“系统变量”中新建
JAVA_HOME
,变量值为JDK安装路径(如C:Program FilesJavajdk1.8.0_321
); - 编辑
Path
变量,添加%JAVA_HOME%bin
,确保系统能找到java.exe
和javac.exe
。
运行jar程序的基本命令
最常用的运行jar程序命令是java -jar
,其基本语法为:
java -jar jar文件名.jar [参数]
jar文件名.jar
是目标jar包的完整路径(若jar包在当前目录,可直接写文件名),[参数]
是可选的运行参数(如程序配置、JVM参数等)。
常用参数详解
通过添加参数可以控制jar程序的运行行为,以下是常用参数的说明(可整理为表格):
参数名 | 作用说明 | 示例 |
---|---|---|
-jar |
指定以jar包方式运行(需jar包包含META-INF/MANIFEST.MF 且声明Main-Class) |
java -jar app.jar |
-cp 或 -classpath |
指定类搜索路径(覆盖jar包中的Class-Path) | java -cp lib/*.jar;app.jar com.example.Main |
-Xms |
设置JVM初始堆内存大小(单位:MB) | java -Xms512m -Xmss1024m -jar app.jar |
-Xmx |
设置JVM最大堆内存大小(单位:MB) | java -Xmx2048m -jar app.jar |
-D |
设置系统属性(如配置文件路径、日志级别等) | java -Dspring.profiles.active=prod -jar app.jar |
--spring-boot.run.args |
Spring Boot应用专用参数(如端口、配置) | java -jar app.jar --server.port=8081 |
常见问题及解决方法
提示“no main manifest attribute”
原因:jar包的META-INF/MANIFEST.MF
文件未正确声明Main-Class
属性,或jar包不是可执行的jar(如依赖未打包)。
解决方法:
- 方法1:使用
-cp
指定主类路径(需知道主类的全限定名,如com.example.Main
):java -cp app.jar com.example.Main
- 方法2:重新打包jar,确保
MANIFEST.MF
包含Main-Class
:
使用Maven/Gradle构建时,添加插件(如Maven的maven-shade-plugin
)自动生成可执行jar。
依赖jar包缺失(ClassNotFoundException
)
原因:jar程序依赖的外部jar包未在类路径中,JVM无法加载。
解决方法:
- 方法1:使用
-cp
指定所有依赖jar路径(Windows用分隔,Linux用分隔):java -cp app.jar;lib/dependency1.jar;lib/dependency2.jar com.example.Main
- 方法2:将依赖jar包放入jar包的
lib
目录,并在MANIFEST.MF
中添加Class-Path: lib/
:Manifest-Version: 1.0 Main-Class: com.example.Main Class-Path: lib/dependency1.jar lib/dependency2.jar
需要后台运行jar程序
Windows系统:使用start /B
命令让程序在后台运行:
start /B java -jar app.jar
Linux/Mac系统:使用nohup
和&
组合,将输出重定向到日志文件:
nohup java -jar app.jar > app.log 2>&1 &
查看和管理运行中的jar程序
查看运行中的Java进程
- Windows:
tasklist | findstr "java"
输出类似
java.exe 12345 Console 1 123 456
,其中12345
为进程ID(PID)。 - Linux/Mac:
ps -ef | grep java
终止运行中的jar程序
- Windows:通过PID终止进程:
taskkill /F /PID 12345
- Linux/Mac:通过PID终止进程:
kill -9 12345
FAQs
Q1:运行jar时提示“无法加载主类”,但Main-Class已配置正确,怎么办?
解答:可能原因是类路径冲突或主类包名/类名错误,可尝试以下步骤:
- 使用
jar tf jar文件名.jar
查看jar包内容,确认主类文件是否存在(如com/example/Main.class
); - 检查包名是否正确(Java区分大小写,
com.example.Main
和com.example.main
不同); - 尝试使用
-verbose
参数查看JVM加载类的详细日志:java -verbose -jar app.jar
,定位具体加载失败类。
Q2:如何设置jar程序的JVM参数(如堆内存、GC策略)?
解答:JVM参数需放在-jar
参数之前,
java -Xms512m -Xmx2048m -XX:+UseG1GC -jar app.jar
常用JVM参数包括:
-Xms
/-Xmx
:初始/最大堆内存;-XX:+UseG1GC
:使用G1垃圾收集器;-Dfile.encoding=UTF-8
:设置文件编码;-Xlog:gc=gc.log:time,uptime
:生成GC日志。
注意:参数顺序需符合JVM规范,-jar
必须位于类路径和JVM参数之后。
通过以上步骤和方法,您可以灵活地在DOS命令行中运行和管理jar程序,解决常见的运行问题,并根据需求调整JVM参数和程序配置。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14840.html