Java运行jar包时,命令行参数必须放在-jar选项和jar文件路径之后;JVM参数如-Xmx、-D需置于-jar之前;错误地将应用参数放-jar前会导致“找不到主类”错误。

运行 Java 的 jar 包时,命令行参数要**放在 -jar 选项之后、jar 文件路径之后**,且**不能放在 -jar 前面**。这是最容易出错的地方。
标准语法格式
正确的命令结构是:
java -jar your-app.jar arg1 arg2 arg3其中:
-
your-app.jar是可执行 jar 包(含Main-Class的 MANIFEST.MF) -
arg1 arg2 arg3是传给主类main(String[] args)方法的参数,顺序一一对应 - 所有 JVM 启动参数(如
-Xmx、-D)必须写在-jar之前
常见错误写法及后果
❌ 错误:参数写在 -jar 前面
→ JVM 会把 arg1 当作主类名尝试加载,报错:Error: Could not find or load main class arg1
❌ 错误:混用 -cp 和 -jar
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
→ -jar 会忽略 -cp,classpath 仅以 MANIFEST 中的 Class-Path 为准
传递 JVM 参数和应用参数的组合写法
✅ 正确示例(设置堆内存 + 系统属性 + 应用参数):
java -Xmx512m -Dfile.encoding=UTF-8 -jar myapp.jar --port 8080 --debug说明:
-
-Xmx512m和-Dfile.encoding=UTF-8是 JVM 参数,必须在-jar前 -
--port 8080 --debug是传给main(String[] args)的字符串数组,程序内可解析 - 双横线
--不是 Java 内置语法,而是应用自己约定的“分隔符”,是否支持取决于你的代码逻辑
验证参数是否生效的小技巧
在主类中加一行调试输出,快速确认:
public static void main(String[] args) {System.out.println("Received args: " + Arrays.toString(args));
// ... 其余逻辑
}
运行后控制台直接看到传入的参数内容,避免黑盒猜测。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










