this questionで開始されたNeonのEquinoxを使用してEclipse 3.xアプリケーションを実行しようとしています。ExtendedLogServiceが起動していないと表示されます
私の残りの問題は、LogReaderServiceががをスローするように見える)org.eclipse.core.internal.runtime.InternalPlatform.getLog(中下のセカンドラインとして、使用できないように見えるということであることが表示されますNullPointerExceptionが:
ExtendedLogReaderService logReader = logReaderTracker.getService();
logReader.addLogListener(result, result);
このクラスの実装は、私がアプリケーションを起動していorg.eclipse.osgi、で見つけることができます。しかし何らかの理由で、サービスはnullです。これは、多くのプラグインがActivatorからLoggingサービスを取得することに依存しているため、多くのプラグインが例外をスローする原因となります。
org.eclipse.osgiには内部実装が含まれているため、サービスを登録することも想定していました。それは事実ではないようです。私もlog4jとorg.apache.felix.logを含めて試してみましたが、どちらもこの問題を解決していないようです。
LogServiceを開始するには、ここで欠けていることがありますか?ここでは、スタックトレースがあります:
Caused by: java.lang.ClassNotFoundException: An error occurred while automatically activating bundle org.eclipse.core.resources (44).
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:116)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:529)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:419)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 20 more
Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resources.
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:795)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:724)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470)
at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
... 29 more
Caused by: java.lang.NullPointerException
at org.eclipse.core.internal.runtime.InternalPlatform.getLog(InternalPlatform.java:353)
at org.eclipse.core.runtime.Platform.getLog(Platform.java:976)
at org.eclipse.core.internal.utils.Policy.log(Policy.java:159)
at org.eclipse.core.internal.resources.Workspace.setCrashed(Workspace.java:2302)
at org.eclipse.core.internal.resources.SaveManager.restoreSnapshots(SaveManager.java:963)
at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:720)
at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1587)
at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2399)
at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2156)
at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:464)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:774)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:767)
... 36 more
私も依存BNDファイルのいずれかに
Require-Capability: osgi.service;filter:="(objectClass=org.osgi.service.log.LogService)";effective:=active
を追加しました。これは問題を解決するようには見えなかった。
編集:OSGIフレームワークがbndrunファイルにorg.eclipse.osgiに設定されているためには、初期化され得ることから伐採を防ぐということですか?また、org.apache.commons.loggingとosgi.enroute.equinox.log.adapterを追加しようとしました。何かがログに記録しようとすると、まだNPEを取得しています。 org.eclipse.osgiバンドルは、既にRCPプラグインがアクティブになるまでに実行されているとみなされています...まだExtendedLogReaderServiceはありません。 org.eclipse.osgiをExtendedLogReaderServiceImplが登録されるためにフレームワークで開始できるようにするために、コアランタイムとしてFelixをインストールする方法を見つける必要がありますか?
私はLogServiceを受信する方法の例を多数見つけました...私はどのように起動するのか見ていませんExtendedLogService。
編集2:ダミーの
ExtendedLogService
の実装を登録することで、LogService
のヌルの問題を抑制できました。