java - 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
解决方案
JAR 文件中的目录结构必须与类的包结构相匹配,并且Main-Class
属性必须设置为包含作为public static void main(String[] args)
应用程序入口点的方法的类的完全限定名称。
你的课程在包里rackserials
吗?那么*.class
JAR 文件中的文件必须在名为 的目录rackserials
中,而不是在 JAR 文件的根目录中。
您可以使用 列出 JAR 文件的内容jar tvf rackserials.jar
。它应该如下所示:
META-INF/MANIFEST.MF
rackserials/tdms.class
(whatever other files)
有关创建 JAR 文件和使用清单文件创建可执行 JAR 的所有详细信息,请参阅Oracle 的 Java 教程中的在 JAR 文件中打包程序。
推荐阅读
- c# - 如何获取子属性的 PropertyDescriptor
- java - 引诱报告:引诱如何从不同的测试中保存/获取两个结果
- xamarin - 如何防止父滚动视图从手势捕获子滚动
- javascript - 从数组中同步删除值
- go - 如何从 Go 中的 Thrift Server 获取客户端 IP,thrift 版本 0.10.0?
- node.js - Express with Pug 模板:继承,如何在 Express 中使用不同的路由使 Block 工作?
- android - 如何使用 Espresso 测试记录器为以编程方式创建的视图创建 UI 测试
- c++ - 如何检查 CNG Windows API 返回符合 FIPS 的算法实现
- windows - 如何发布/发布 .Net Core 控制台应用程序?
- json - 使用 jq 向动态键添加值