0

サードパーティのOSGiコンテナ用のプラグインを書いています。プラグインには、次のようなコードがあります。

  リソースr=factory.getInstance()。getResource( "test");
  文字列s=r.getList()[0];

2行目で次のように失敗します。

原因:java.lang.reflect.InvocationTargetException
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で
        java.lang.reflect.Method.invoke(Method.java:597)で
        org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:206)で
        ...34もっと
原因:java.lang.NoClassDefFoundError:com / thirdparty / list
        user1.SampleCode.main(SampleCode.java:20)で
        ...39もっと
原因:java.lang.ClassNotFoundException:com.thirdparty.list
        org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:489)で
        org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)で
        org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)で
        org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)で
        java.lang.ClassLoader.loadClass(ClassLoader.java:247)で
        ...42もっと

次に、不足しているクラスをプラグインJARに含めようとすると、別のエラーが発生します。

原因:java.lang.reflect.InvocationTargetException
        sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で
        java.lang.reflect.Method.invoke(Method.java:597)で
        org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:206)で
        ...34もっと
原因:java.lang.LinkageError:ローダー制約違反:ローダー(org / eclipse / osgi / internal / baseadaptor / DefaultClassLoaderのインスタンス)が以前に「com / thirdparty/list」という名前の別のタイプのロードを開始しました
        java.lang.ClassLoader.defineClass1(ネイティブメソッド)で
        java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)で
        java.lang.ClassLoader.defineClass(ClassLoader.java:615)で
        org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)で
        org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)で
        org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)で
        org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)で
        org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)で
        org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)で
        org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)で
        org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)で
        org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)で
        org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)で
        org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)で
        org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)で
        java.lang.ClassLoader.loadClass(ClassLoader.java:247)で
        user1.SampleCode.main(SampleCode.java:20)で
        ...39もっと

何が起こっている?クラスローダーは私が必要とするクラスを知っているようで、私にそれを使用させたり、私自身のコピーを含めたりすることはできません。

4

0 に答える 0