1

我有一个 jar 文件 A.jar,其中包含各种库函数,其中包含一个带有main方法的类,MainClass. 该 jar 文件通过将其包装到 OSGi 包 B.jar 中进行部署,以便库函数可用于 OSGi 容器中的其他插件,如 B.jar 的 MANIFEST.MF 中所指定。

我还希望能够MainClass.main在 OSGi 之外的单独进程中启动 A.jar 中包含的方法,但我在文件系统上可用的只有 B.jar。所以,例如,

java -cp B.jar MainClass

失败了

Error: Could not find or load main class MainClass

然而

java -cp A.jar MainClass

在 A.jar 被 B.jar 包裹之前,在我的桌面上工作得很好。

有没有办法MainClass.main直接从 B.jar 运行?

4

1 回答 1

0

目前尚不清楚,但我假设 B.jar 包含 A.jar 作为条目。所以A.jar只是B.jar中的一个资源。为了从 B.jar 运行 A.jar 中的 MainClass,您需要为 B.jar 编写一个新的 main,它将为 A.jar 资源创建一个 ClassLoader,然后加载 MainClass 类并调用它的 main 方法。

于 2013-10-03T21:04:19.647 回答