【问题标题】:Jar Manifest help: Could not find or load main classJar Manifest 帮助:无法找到或加载主类
【发布时间】:2019-04-20 01:13:36
【问题描述】:

尝试创建可执行的 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

CLI

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

【问题讨论】:

    标签: java jar manifest executable-jar manifest.mf


    【解决方案1】:

    JAR 文件中的目录结构必须与类的包结构匹配,并且Main-Class 属性必须设置为包含public static void main(String[] args) 方法的类的完全限定名称,该方法是你的申请。

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

    您可以使用jar tvf rackserials.jar 列出 JAR 文件的内容。它应该是这样的:

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

    有关创建 JAR 文件和使用清单文件创建可执行 JAR 的所有详细信息,请参阅 Oracle 的 Java 教程中的 Packaging Programs in JAR Files

    【讨论】:

    • 谢谢 Jesper - 这让我走上了正轨。这些类在包机架序列中,但我试图从它们都包含在其中的目录中制作我的 JAR 文件 - 所以类路径是错误的。看看我如何使用 java rackserials.tdms 运行让我思考,我得出了与您在此处发布的相同的结论。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2015-03-05
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2012-10-13
    相关资源
    最近更新 更多