创建Jar存档会显示“找不到或加载主类". [英] Creating Jar archive gives "Could not find or load main class"

查看:71
本文介绍了创建Jar存档会显示“找不到或加载主类".的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

$ 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/中确实有几个文件位于我的类路径中,我是否需要包括这些文件?

I expect java -jar Llanfair.jar to start my application, so I'm not sure what I'm doing wrong here. I do have a couple of files in lib/ which are on my classpath when I run the java code normally, do I need to include those?

如果需要的话,我的操作系统是Mac OS 10.11.1.

My OS is Mac OS 10.11.1, if it matters.

推荐答案

我在清单中缺少Class-Path:值,为什么它以这种方式出现却超出了我的范围.

I was missing the Class-Path: value in the manifest, why it would appear in this way is beyond me.

$ cat Manifest.txt
Class-Path: lib/ui.jar lib/jnativehook-2.0.2.jar
Main-Class: org.fenix.llanfair.Llanfair

$ jar cfm Llanfair.jar Manifest.txt org lib
$ java -jar Llanfair.jar 
<normal application output>
^C$ jar -xf Llanfair.jar
$ ls Llanfair
ls: Llanfair: No such file or directory
<manually extracted Llanfair.jar using Archive Utility>
$ cat Llanfair/META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Class-Path: lib/ui.jar lib/jnativehook-2.0.2.jar
Created-By: 1.8.0_25 (Oracle Corporation)
Main-Class: org.fenix.llanfair.Llanfair

$

稍微复杂一点.我试图将jar依赖项包含在Llanfair.jar中.不允许这样做,因为/reasons/.上面的代码起作用了,因为我在同一目录中运行了jar,所以存在lib/ui.jar,因为我正在使用它进行构建.

It's a little more complex. I was trying to include the jar dependencies in Llanfair.jar. This is not allowed because /reasons/. The above was working because I was running the jar in the same directory -- so lib/ui.jar was present because I was using it to build.

这篇关于创建Jar存档会显示“找不到或加载主类".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆