使用-Dserver.port参数执行Jar文件失败,求原因及解决方案
问题原因与解决办法
错误原因分析
第一个命令报错原因
你输入的java -Dserver.port=8082 -jar .\target\demoApp-0.0.1-SNAPSHOT.jar语法本身合规,但报错显示Java将.port=8082识别为主类名,大概率是输入时**-D和server.port之间误加了空格**(比如写成java -D server.port=8082 -jar ...)。此时Java会把server.port=8082当作要运行的主类,而类名不能以.开头,因此抛出ClassNotFoundException。
第二个命令报错原因
调整后的java -jar -Dserver.port=8082 .\target\demoApp-0.0.1-SNAPSHOT.jar违反了Java命令的核心规则:所有JVM参数(包括-D系统属性)必须放在-jar参数之前。-jar后面必须直接跟目标jar文件的路径,你把-D参数放在-jar之后,Java会把这个参数当作jar文件名,自然找不到对应文件,因此报错Unable to access jarfile .port=8082。
解决办法
使用符合Java命令语法的正确写法,确保-D系统属性参数放在-jar之前,且-D与属性名之间无空格:
java -Dserver.port=8082 -jar .\target\demoApp-0.0.1-SNAPSHOT.jar
如果确认输入无误仍报错,可排查以下两点:
- 验证当前工作目录下存在
.\target\demoApp-0.0.1-SNAPSHOT.jar,或改用绝对路径指定jar文件,例如:
java -Dserver.port=8082 -jar C:\your-project-path\target\demoApp-0.0.1-SNAPSHOT.jar
- 检查jar包的打包完整性,确保
MANIFEST.MF文件中正确配置了Main-Class属性(指定程序入口类)。
内容的提问来源于stack exchange,提问作者amar2108
相关产品推荐
相关产品推荐

