首页 > 解决方案 > Jar Manifest 帮助:无法找到或加载主类

问题描述

试图创建一个可执行的 jar 文件 - 但我似乎无法正确获取清单

清单文件“tdms.mf”

Manifest-Version: 1.0
Main-Class: rackserials.tdms

罐子创建

jar cfvm rackserials.jar tdms.mf  *.class assetdata.xlsx
added manifest
adding: Asset.class(in = 10946) (out= 3918)(deflated 64%)
adding: TDMSConnection.class(in = 2599) (out= 1372)(deflated 47%)
adding: tdms.class(in = 13402) (out= 6732)(deflated 49%)
adding: assetdata.xlsx(in = 23998) (out= 20987)(deflated 12%)

从名为“tdms”的目录中运行此命令内容:

Asset.class
TDMSConnection.class
tdms.class **where my main is located**
tdms.mf
assetdata.xlsx

命令行界面

java -jar rackserials.jar 
Error: Could not find or load main class rackserials.tdms

标签: javajarmanifestexecutable-jarmanifest.mf

解决方案


JAR 文件中的目录结构必须与类的包结构相匹配,并且Main-Class属性必须设置为包含作为public static void main(String[] args)应用程序入口点的方法的类的完全限定名称。

你的课程在包里rackserials吗?那么*.classJAR 文件中的文件必须在名为 的目录rackserials中,而不是在 JAR 文件的根目录中。

您可以使用 列出 JAR 文件的内容jar tvf rackserials.jar。它应该如下所示:

META-INF/MANIFEST.MF
rackserials/tdms.class
(whatever other files)

有关创建 JAR 文件和使用清单文件创建可执行 JAR 的所有详细信息,请参阅Oracle 的 Java 教程中的在 JAR 文件中打包程序。


推荐阅读