我在 JBoss 7.1.1 中部署了一个简单的 OSGi 测试包,并尝试通过执行动态实例化 Jacorb ORB
Class clazz = Class.forName("org.jacorb.orb.ORB");
我得到的只是
java.lang.ClassNotFoundException: org.jacorb.orb.ORB from [Module "deployment.test:1.0.0" from Service Module Loader]
我已经做了什么:
- 在 JBoss 配置中,
standalone.xml
我为 osgi-subsystem 添加了能力<capability name="org.jacorb" startlevel="1"/>
,以便org.jacorb
加载模块。这已经解决了我的测试包安装失败的问题。 我在我的
Dependencies
-Descriptor中声明了(也尝试过使用和不使用该选项):org.jacorb
MANIFEST.MF
export
Dependencies: org.jacorb export
我将以下内容添加
jboss-deployment-structure.xml
到我的META-INF
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.jacorb" /> </dependencies> </deployment> < /jboss-部署结构>
我还对 ClassLoaders 进行了实验,并意识到 ContextClassLoader 是null
. 但最后,我不能将其作为非测试代码来实现,因为Class.forName()
无法更改为使用特定的类加载器。
那么为什么我会得到这个 ClassNotFoundException 呢?
提前致谢
亚历克斯