我有几个OSGi包;我在一个bundle中旋转一个线程并在run方法内部,我试图从另一个bundle创建一个类的实例,但它只是失败,抛出ClassNotFoundException
捆绑1:
package com.test.bnd1;
public Class A {
}
pom.xml:
Export-package: com.test.bnd1.*
捆绑2:
public com.test.bnd2;
public Class B {
public void init() {
MyThd thd = new MyThd();
thd.start();
}
}
public Class MyThd extends Thread {
public void run() {
A a = new A(); //throws ClassNotFoundException
}
}
pom.xml:
Import-package: com.test.bnd1.*
blueprint.xml:
<bean id="testB" class="com.test.bnd2.B" init-method="init"/>
有人可以帮忙吗?
答案 0 :(得分:1)
OSGi中没有名为#include <iostream>
inline double fun()
{
return 3.0;
}
extern double m;
double d2=m;
int main()
{
std::cout<<d2;
}
double m=fun();
或exports-package
的标头。
您需要分别使用imports-package
和Export-Package
。
答案 1 :(得分:0)
在阅读了这个article之后,我将当前线程的TCCL重置为bundle类加载器,并从其他bundle加载了类。如果其他人有更好的解决方案,请告诉我。