jar包运行时提示jar中没有主清单属性的解决方法

356 阅读2分钟

当你尝试运行一个jar文件时,可能会遇到一个错误提示,说“jar中没有主清单属性”。这个错误的意思是你的jar文件中没有指定一个主类。主类是包含main方法的那个类,它是程序运行时首先被调用的。在Java应用程序中,main方法作为程序入口点。

解决这个问题需要两步。首先需要确保你有一个包含main方法的Java类,并且这个Java类能够正确地启动你想要运行的应用程序。其次,在创建jar文件时要确保在清单(Manifest)文件中指定了正确地主类。

下面详细解释一下如何操作:

  1. 确认有包含main方法的Java 类

    首先确认一下是否存在能够启动应用程序入口点(即 main 方法) 的 Java 类。

    例如:

     public class MainClass {
         public static void main(String[] args) {
             // 代码逻辑
         }
     }
    ​
    
  2. 创建或修改Manifest 文件

    清单(Manifest) 文件是 jar 文件内部特殊存在,在创建 jar 包过程会自动生成或者可以手动创建。

    清单文件通常名为 MANIFEST.MF ,位于 META-INF 目录内部。

  3. 在 Manifest 中指定 Main-Class 属性

    在 Manifest 中添加或修改 Main-Class 属性来指向上面确认过存在 main 方法 的 Java 类全名。

    Manifest-Version: 1.0
    Main-Class: com.example.MainClass

    注意:Main-Class 后面的值是你的主类的全名,包括它所在的包。例如,如果你的主类叫 MainClass,并且它在一个叫 com.example 的包里,那么你应该写 Main-Class: com.example.MainClass。并且注意 Manifest 文件每行结束后需要有一个空格或者新行。

  4. 创建或重新打包 jar 文件

    使用 jar 命令重新打包jar文件,并指定新创建或修改过后含有 Main-Class 属性 的 Manifest 文件。

    jar cvfm new.jar MANIFEST.MF -C compiled/ .
    ​
    

    这个命令中 cvfm 是选项集合:c 表示创建新归档文件;v 表示生成详细输出到标准输出;f 表示指定归档文件名;m表示使用提供清单文件。

    new.jar 是要创建jar 包名称。

    MANIFEST.MF 是清单(Manifest) 文件路径。

    -C compiled/ . 指定了要添加到jar中内容所在目录和内容(这里是所有内容)。

这样就可以解决“jar中没有主清单属性”的问题了。如果还有问题可能需要检查一下是否正确地指向了含有main方法地Java类以及Manifest是否正确配置和引用。

蓝易云-五网CN2服务器【点我购买】

蓝易云采用KVM高性能架构,稳定可靠,安全无忧!
蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。