You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行java -jar命令时出现找不到主类test.Class1的错误求助

解决"Could not find or load main class test.Class1"的问题

我来帮你排查这个报错,你遇到的manifest error, Error: Could not find or load main class test.Class1主要是几个操作误区导致的,咱们一步步拆解解决:

1. 你用的执行命令完全不对

java -jar jarName.jar Class1.java是错误的命令组合,这里有两个核心问题:

  • java -jar是用来直接运行可执行JAR包的,此时不需要指定任何.java源文件——JAR包里应该已经包含编译好的class文件,并且提前配置了主类信息。
  • 如果你想直接运行单个编译后的class文件,应该切换到class文件的根目录(也就是test目录的父目录),执行java test.Class1,而不是带-jar参数再加源文件。

2. 可执行JAR包的两个必要条件

要让JAR包能通过java -jar正常运行,必须满足两个核心要求:

  • JAR包内的目录结构要和你的包结构一致:必须有test目录,里面存放Class1.class、Class2.class等编译后的文件(不是.java源文件)。
  • JAR包的META-INF/MANIFEST.MF文件中,必须明确指定主类的全限定名,也就是要包含这一行:Main-Class: test.Class1

3. 正确的操作步骤(从头走一遍)

假设你的所有.java文件都放在test目录下,当前工作目录是test的父目录,按以下步骤操作:

第一步:编译源文件

执行编译命令,生成对应的class文件:

javac test/*.java

执行后test目录下会出现Class1.class、Class2.class等文件。

第二步:创建MANIFEST.MF配置文件

在当前工作目录下新建一个文本文件,命名为MANIFEST.MF,内容如下:

Main-Class: test.Class1

⚠️ 重要提醒:文件的最后一行必须是空行,否则JAR工具会无法正确识别这个配置。

第三步:打包成可执行JAR

执行打包命令,把class文件和MANIFEST配置一起打包:

jar cvfm jarName.jar MANIFEST.MF test/*.class

第四步:运行JAR包

现在就可以用正确的命令运行了:

java -jar jarName.jar

4. 额外注意事项

  • 不要把.java源文件打包到JAR里,JAR包只需要编译后的.class文件。
  • 主类名必须写全限定名(包名+类名),不能只写Class1,否则JVM找不到对应的类。

内容的提问来源于stack exchange,提问作者Devendra Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:47:03