当前位置: 首页 > 知识库问答 >
问题:

从OSGi bundle在JBoss 7.1.1中动态加载类时发生ClassNotFoundException

南门鸿哲
2023-03-14

我在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-deployment-structure.xml到我的META-INF中,内容如下

我还对类加载器进行了实验,发现ContextClassLoader是null。但最后,我不能将其作为非测试代码,因为类。forName()不能更改为使用特定的类加载器。

那么,为什么我得到这个ClassNotFoundExcema?

提前谢谢

亚历克斯

共有2个答案

葛胡媚
2023-03-14

如果你有一个普通的OSGi包,并且它应该看到org.jacorb.orb.的ORB类,那么你应该有: 1。所有org.jacorb包和子包都必须在osgi框架中导出。2.您的包必须导入您使用的所有包——例如,使用“导入包:org.jacorb.orb”检查版本是否兼容。检查是否导入了所有软件包和子软件包。进口org.jacorb并不意味着org.jacorb.orb.

如果这两个条件都满足,那么包的包类加载器应该能够看到org。雅科布。圆球。圆球。

阚砚文
2023-03-14

经过几个小时的挖掘,我完成了拼图;-)

  1. standalone中。xml/域。xmlJBoss配置我添加了

 类似资料:
  • 该应用程序是模块化插件架构。即,在完成工作的同时动态加载类。为此,自定义类加载器扩展了类加载器。 问题的本质是在Eclipse中运行应用程序,而在终端(ubuntu)中使用以下代码行(其中目录m/表示模块的位置*. class): 我得到以下信息: 10:07:24085调试主CModuleLoader:findClass:39-运行系统类加载器。线程“main”java中出现异常。朗。反思。在太

  • 我有OSGI bundle(比方说A),它依赖于非OSGI库(比方说B)。B正在使用class.ForName加载一个类(库A中的ClassA是库B中的ClassB类型)。我已经包装了库B,使其成为osgi捆绑包,并导入了库A中所需的包,但我无法使用class.forname加载该类。请注意,库B是第三方库,我没有任何控制这一点。 下面是我创建的支持OSGI的库B的清单文件- manifest-v

  • 问题内容: 我正在使用Spring 3.0开发一个webapp,处于休眠状态。当我尝试在WAS 7.0上部署我的应用程序时,它给了我错误- 无法加载侦听器:org.springframework.web.context.ContextLoaderListener]:java.lang.ClassNotFoundException: 这是我的网络应用程序的外观: 引发的异常如下: 那么,web.xm

  • 问题内容: 我查找了语法并搜索了api,但仍然对该过程感到困惑。我还搜索了Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。 问题答案: 假设该类具有无参数构造函数,则最简单的方法是- 参考-java.lang.Class

  • 问题内容: 我正在尝试在Android平台上的运行时动态加载类。该类包含在单独的库JAR文件中,但与APK打包在一起(按照SDK中的新库机制)。使用Class.forname方法时,我收到未找到的类异常。我已经看到了有关DexClassLoader方法的一些讨论,但是我找不到如何使用它的好例子(以及是否是最好的使用方法- 它似乎比forname方法复杂得多!)。 如果有人可以提供示例代码片段来说明

  • 问题内容: 是否可以在运行时动态加载Django应用?通常,应用是在初始化时使用settings.py中的INSTALLED_APPS元组加载的。但是,是否可以在运行时加载其他应用程序?我在不同情况下遇到此问题。例如,一种情况是在测试期间出现的,当时我想动态加载或卸载应用程序。 为了使问题更具体,想象一下我有一个名为我放置应用程序的目录,并且我想自动安装安装在其中的任何新应用程序,而无需手动编辑s