当你尝试运行一个jar文件时,可能会遇到一个错误提示,说“jar中没有主清单属性”。这个错误的意思是你的jar文件中没有指定一个主类。主类是包含main方法的那个类,它是程序运行时首先被调用的。在Java应用程序中,main方法作为程序入口点。
解决这个问题需要两步。首先需要确保你有一个包含main方法的Java类,并且这个Java类能够正确地启动你想要运行的应用程序。其次,在创建jar文件时要确保在清单(Manifest)文件中指定了正确地主类。
下面详细解释一下如何操作:
-
确认有包含main方法的Java 类
首先确认一下是否存在能够启动应用程序入口点(即 main 方法) 的 Java 类。
例如:
public class MainClass { public static void main(String[] args) { // 代码逻辑 } } -
创建或修改Manifest 文件
清单(Manifest) 文件是 jar 文件内部特殊存在,在创建 jar 包过程会自动生成或者可以手动创建。
清单文件通常名为 MANIFEST.MF ,位于 META-INF 目录内部。
-
在 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 文件每行结束后需要有一个空格或者新行。 -
创建或重新打包 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是否正确配置和引用。
蓝易云采用KVM高性能架构,稳定可靠,安全无忧!
蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。
海外免备案云服务器链接:www.tsyvps.com
蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。