java - 创建 Jar 存档给出 "Could not find or load main class"

标签 java jar manifest

$ cat Manifest.txt 
Main-Class: org.fenix.llanfair.Llanfair

$ cat org/fenix/llanfair/Llanfair.java | grep main
public static void main(String[] args) {
$ jar cfm Llanfair.jar Manifest.txt org
$ java -jar Llanfair.jar 
Error: Could not find or load main class org.fenix.llanfair.Llanfair
$ jar -xf Llanfair.jar
$ cat Llanfair/META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Created-By: 1.8.0_25 (Oracle Corporation)
Main-Class: org.fenix.llanfair.Llanfair

$ ls Llanfair/org/fenix/llanfair/ | grep Llanfair
Llanfair$1.class
Llanfair$2.class
Llanfair$MenuItem.class
Llanfair$RecentMenuItem.class
Llanfair.class
$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

我希望 java -jar Llanfair.jar 启动我的应用程序,所以我不确定我在这里做错了什么。当我正常运行 java 代码时,lib/中确实有几个文件位于我的类路径中,我需要包含这些文件吗?

如果重要的话,我的操作系统是 Mac OS 10.11.1。

最佳答案

Llanfair.jar 中的文件结构似乎错误。

根据您的评论jar -xf Llanfair.jar创建一个类似的结构

Llanfair/META-INF/MANIFEST.MF 
Llanfair/org/fenix/llanfair/Llanfair.class

但是jar文件内部的结构必须是

META-INF/MANIFEST.MF 
org/fenix/llanfair/Llanfair.class

关于java - 创建 Jar 存档给出 "Could not find or load main class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689262/

相关文章:

java - 将 JSON 文件从 url 保存到内部存储中

java - 如何在java中拆分字符串中的目录路径组件

java - 我可以在java中保留两个不同版本的相同jar吗?

java - 为什么我的 jar 文件拒绝分发?

java - 用最少的计算量寻找素数的算法

java - 如何一次性释放/GC HashMap<String,XYZ>(无需迭代)?

java - 使用 java -jar 运行 scala 应用程序

java - 从批处理脚本创建 jar 文件

java - 如何设置包版本

url - 在 Google Chrome 中检测空的新标签打开