繁体   English   中英

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

[英]Class not found despite of classpath in 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。

我做错了什么?

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

您有两种选择:

  1. 将MySQL jar放在mybundle.jar之外的lib目录中。
  2. 创建一个胖jar ,除了你自己的类之外,它还包含所需jar文件中的所有类。 这可以从EclipseMaven中获得

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM