我部署一个简单的OSGi的测试包成的JBoss 7.1.1,并尝试做的ClassNotFoundException而JBoss的7.1.1动态类加载从OSGi的捆绑
Class clazz = Class.forName("org.jacorb.orb.ORB");
我的一切动态实例化Jacorb ORB是
java.lang.ClassNotFoundException: org.jacorb.orb.ORB from [Module "deployment.test:1.0.0" from Service Module Loader]
我已经做了:
- 在JBoss配置
standalone.xml
我添加的F或osgi子系统的能力<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的部署结构> <部署> <依赖性> <模块名称= “org.jacorb”/ > < /依赖性> < /部署> </JBoss的部署结构>
另外我做了实验与类加载器并认识到,ContextClassLoader是null
。但最终,我无法将其作为非测试代码来实现,因为Class.forName()
无法更改为使用特定的类加载器。
那么,为什么我会得到这个ClassNotFoundException?
在此先感谢
亚历
你试过'Import-Package:org.jacorb.org'或'Import-Package:org.jacorb.org; resolution = optional'?这些是推荐的方式,DynamicImport-Package不是。另外,Class.forName()*不会为类加载器提供可选参数。 – eis 2013-03-05 14:10:26