2017-05-23 12 views
0

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には内部実装が含まれているため、サービスを登録することも想定していました。それは事実ではないようです。私もlog4jorg.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.loggingosgi.enroute.equinox.log.adapterを追加しようとしました。何かがログに記録しようとすると、まだNPEを取得しています。 org.eclipse.osgiバンドルは、既にRCPプラグインがアクティブになるまでに実行されているとみなされています...まだExtendedLogReaderServiceはありません。 org.eclipse.osgiExtendedLogReaderServiceImplが登録されるためにフレームワークで開始できるようにするために、コアランタイムとしてFelixをインストールする方法を見つける必要がありますか?

私はLogServiceを受信する方法の例を多数見つけました...私はどのように起動するのか見ていませんExtendedLogService


編集2:ダミーのExtendedLogServiceの実装を登録することで、LogServiceのヌルの問題を抑制できました。

答えて

0

問題が解決されました。最終的には、ビルドシステムが正しく実装されているため、osgi.enterpriseRequired-Bundleではないため、OSGI-JDBCサービスがデプロイメントのテスト時に正しく動作しなくなりました。ターゲットプラットフォーム。

また、私たちの主RCPプラグイン(、などをApplicationクラスを含む)は、他のいくつかの問題につながるMANIFEST.MFファイルを生成するために使用*.bndファイルにBundle-ActivationPolicy: lazy句を持っていませんでした。

他の誰かがこのような問題に遭遇した場合に備えて。

関連する問題