从OSGi包中启动类的主方法

时间:2013-10-03 14:07:18

标签: java osgi-bundle

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

我还希望能够在OSGi之外的单独进程中启动A.jar中包含的MainClass.main方法,但我在文件系统上可用的所有方法都是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之前,

在我的桌面上运行得很好。

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

1 个答案:

答案 0 :(得分:0)

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