尽管在MANIFEST中没有找到类路径,但是找不到类

时间:2012-03-13 13:18:41

标签: java classpath manifest

我有这个罐子:

/mybundle.jar/
    de/mybundle/myclass.class
    lib/mysql.jar
    META-INF/MANIFEST.MF

使用以下MANIFEST.MF

Manifest-Version: 1.0
Class-Path: lib/mysql.jar
Main-Class: de.mybundle.myclass

这对我来说似乎完全正确,但是当我跑步时

java -jar mybundle.jar

当类试图实例化其中一个MySQL-Library类时,我得到一个NoClassDefFoundException。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您无法将jar文件捆绑在其他jar文件中。清单中指定的路径相对于您正在调用的jar文件的位置,因此在您的情况下相对于mybundle.jar的位置。

您有两种选择:

  1. 将MySQL jar放在mybundle.jar
  2. 之外的lib目录中
  3. 创建 fat jar ,除了您自己的类之外,还包含所需jar文件中的所有类。这可以在EclipseMaven内找到。

答案 1 :(得分:0)

如果你的mybundle.jar在c:/ foo中,那么你的mysql.jar就在c:/ foo / lib中。清单中的Class-Path与您编写它的方式相对于可执行JAR。