Ubuntu 22.04下如何在Manifest文件指定Jar包入口点运行MMAX2.jar?
解决MMAX2.jar运行时"no main manifest attribute"及主类找不到的问题
问题根源分析
你之前的配置存在两处关键错误:
Main-Class格式错误:不需要在类名后追加.main,JVM会自动识别类中的public static void main(String[] args)方法,你只需要指定包含该方法的类的全限定名即可。根据你找到的/org/eml/MMAX2/core/MMAX2.class,对应的类全限定名是org.eml.MMAX2.core.MMAX2(包路径+类名)。Class-Path配置错误:该字段用于指定当前Jar依赖的外部Jar文件路径,Jar内部的类会自动从Jar包中加载,不需要配置内部路径。如果MMAX2.jar没有外部依赖,这个字段可以省略。
解决方案一:修改Jar包的Manifest文件
- 提取Jar中的Manifest文件:
unzip MMAX2.jar META-INF/MANIFEST.MF - 编辑
META-INF/MANIFEST.MF,修改为如下内容(注意冒号后必须有一个空格,最后一行要保留换行):Manifest-Version: 1.0 Main-Class: org.eml.MMAX2.core.MMAX2 - 将修改后的Manifest重新打包回Jar:
jar uf MMAX2.jar META-INF/MANIFEST.MF - 运行Jar包:
java -jar MMAX2.jar
解决方案二:直接用Java命令指定主类运行(无需修改Jar)
如果不想修改Jar文件,可直接通过-cp参数指定类路径并运行主类:
java -cp MMAX2.jar org.eml.MMAX2.core.MMAX2
内容的提问来源于stack exchange,提问作者jak326i205
相关产品推荐
相关产品推荐

