一部のバンドルでライブラリを利用できるようにする必要があります。このライブラリはRMIを使用するため、動作するには(少なくとも私が知る限り)システムクラスローダーを使用する必要があります(ライブラリを「osgi-fy」しようとしたため、実行時にclasscastexceptionsが発生しました)。したがって、私が行ったことは、そのライブラリを使用するバンドルから依存関係を削除し、プロパティjars.extra.classpath(eclipseプロジェクトのbuild.properties内)に含まれているライブラリを使用して依存関係をコンパイルすることでした。
それから私は追加しました
org.osgi.framework.bootdelegation=com.blipsystems.*
felix構成ファイルで、次のコマンドラインを使用してfelixコンテナを起動します。
java -classpath lib/blipnetapi.jar -jar bin/felix.jar
..これにより、blipnetapi.jarライブラリのクラスに対してNoClassDefFoundExceptionがスローされました。
エラー:ファイルの開始中にエラーが発生しました:/home/frza/felix/load/BlipnetApiOsgiService_1.0.0.1.jar(org.osgi.framework.BundleException:バンドルBlipnetApiOsgiService [30]のアクティベーター開始エラー。) java.lang.NoClassDefFoundError:com / blipsystems / blipnet / api / util / BlipNetSecurityManager java.lang.Class.getDeclaredConstructors0(ネイティブメソッド)で java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)で java.lang.Class.getConstructor0(Class.java:2699)で java.lang.Class.newInstance0(Class.java:326)で java.lang.Class.newInstance(Class.java:308)で org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3525)で org.apache.felix.framework.Felix.activateBundle(Felix.java:1694)で org.apache.felix.framework.Felix.startBundle(Felix.java:1621)で org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1076)で org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)で java.lang.Thread.run(Thread.java:619)で 原因:java.lang.ClassNotFoundException:com.blipsystems.blipnet.api.util.BlipNetSecurityManager org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:726)で org.apache.felix.framework.ModuleImpl.access $ 100(ModuleImpl.java:60)で org.apache.felix.framework.ModuleImpl $ ModuleClassLoader.loadClass(ModuleImpl.java:1631)で java.lang.ClassLoader.loadClass(ClassLoader.java:251)で java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)で ...11もっと
だから私の質問は:私は何かが欠けていますか?私は何か悪いことをした?