【问题标题】:how to run a class in the jar file which is in the classpath of another jar file如何在另一个jar文件的类路径中的jar文件中运行一个类
【发布时间】:2011-04-30 00:53:22
【问题描述】:

我有一个名为“a.jar”的 jar 文件,其中有另一个名为“b.jar”的 jar 文件。

a.jar
 |
 |-- META-INF
 |     |
 |     |-- MANIFEST.MF
 |
 |-- b.jar
     |
     |- com/test/MainInB.class

"b.jar" 有 com/test/MainInB.class 文件。 (MainInB 类只打印出“hello world!”)

“a.jar”有这样的 MANIFES.MF:

Manifest-version: 1.0
Main-Class: com.test.MainInB
Class-Path: b.jar

(清单文件确实以空的新行结尾)


我想像这样运行 a.jar,这样它就会打印出“hello world!”

java -jar a.jar

但是我得到了 NoClassDefFoundError!

请帮忙!这是不允许的吗?还是我错过了什么?

R 乔

【问题讨论】:

  • 我认为没有直接的方法可以做到这一点。看看one-jar.sourceforge.net
  • 请注意 a.jar 的类路径指定 b.jar 与 a.jar 相邻。 (即在与 a.jar 相同的目录中作为名为 b.jar 的文件找到)

标签: java jar


【解决方案1】:

实际上我的例子有效!

我只是在使用 maven-assembly-plugin 创建 jar 和 MANIFEST.MF 的项目中遇到问题。

配置或插件中的某些内容必须关闭。

谢谢大家!

【讨论】:

  • 对不起,伙计们..忽略我上面的回答。那是不对的。我认为尝试执行另一个 jar 文件的 jar 文件中的类文件是非法的。
【解决方案2】:

Java 存在无法从 jar 文件中读取 jar 的问题。

他们考虑将其用于未来的版本。但直到现在还没有修复,请参阅BUG

你必须再次将它们保存在 lib 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2013-12-17
    • 2011-08-12
    相关资源
    最近更新 更多