首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载程序违反约束:加载程序(x的实例)以前为名称为y的不同类型启动加载

加载程序违反约束:加载程序(x的实例)以前为名称为y的不同类型启动加载
EN

Stack Overflow用户
提问于 2014-02-10 11:05:31
回答 1查看 5.1K关注 0票数 1

我将Felix iPOJO包装在我的框架中,称之为"MyFramework",以简化它的一些操作。

使用MyFramework,我有以下内容:

1- "HelloService“包,它是一个iPOJO组件,作为服务提供"hello”消息的打印。

2- "MyFrameworkComposite“包,它是另一个iPOJO组件,它在开始方法中实例化上面的"HelloService”组件并检索其服务。

一个初学者包,它只是一个OSGI包,它在其start方法中实例化"MyFrameworkComposite“组件。

4-我的Java应用程序,它加载iPOJO所需的包,以及上面的3个包。

当我运行我的java应用程序时,我会收到以下错误的输出:

代码语言:javascript
复制
MyFramework Hello Service Bundle Started!
MyFramework Composite Bundle Started!
MyFramework Starter Bundle Started!
MyFramework Composite Started!
MyFramework Hello Service Component started!!
hello Component copy State is2
[ERROR]  : [adere-composite-0] The callback method start has thrown an exception : loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceDescription"
java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "org/apache/felix/ipojo/handlers/providedservice/ProvidedServiceDescription"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at .....................................(OTHER SIMILAR ERRORS)
done ok (Y)

错误发生在以下一行:(这一行在我的框架代码中):

代码语言:javascript
复制
public String[] getServiceSpecifications()
{

 return this.providedServiceDescription.getServiceSpecifications();//error here

}

ProvidedServiceDescription是providedServiceDescription类型的,它是org.apache.felix.ipojo.handlers.providedservice包的一部分。

在我的"MyFrameworkComposite“组件中尝试检索"Hello”组件服务时,到达了发生错误的行,如下所示:

代码语言:javascript
复制
ProvidedService ps= content.getProvidedService("myhelloservice.helloservice.HelloService");

我在不同的资源中看到,当类路径中有重复的库时,可能会导致这种情况。但我相信情况并非如此。原因是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-02-11 07:01:16

问题来自于您的OSGi嵌入。来自OSGi框架内部和外部的类并不相同,因为它们的类加载程序不同。您应该配置您的框架,以避免出现以下问题:

  • 通过添加额外的系统包(这里是iPOJO包)
  • 通过将这些包添加到引导委托中

http://felix.apache.org/site/apache-felix-framework-launching-and-embedding.html#ApacheFelixFrameworkLaunchingandEmbedding-hostserviceusage上描述了这个问题和转向

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21675454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档