importPreferences throws exception [message #132451] |
Tue, 12 May 2009 12:02  |
Eclipse User |
|
|
|
Hi,
since a while my RAP-application throws an exception when I want to
import my preferences using
Platform.getPreferencesService().importPreferences( new FileInputStream(
propertiesFile ) );
Could somebody explain me why this happens and how I get it fixed?
best regards Roland
Here is the stackTrace.
!ENTRY org.eclipse.rap.ui.workbench 4 2 2009-05-12 17:56:41.937
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.rap.ui.workbench".
!STACK 0
java.lang.NullPointerException
at
org.eclipse.ui.internal.progress.ProgressInfoItem.init(Progr essInfoItem.java:164)
at
org.eclipse.ui.internal.progress.ProgressManager$ProgressMan agerProvider.getInstance(ProgressManager.java:73)
at
org.eclipse.ui.internal.progress.ProgressManager.getInstance (ProgressManager.java:151)
at
org.eclipse.ui.internal.progress.JobManagerAdapter$3.run(Job ManagerAdapter.java:170)
at
org.eclipse.rwt.internal.lifecycle.UICallBackServiceHandler. runNonUIThreadWithFakeContext(UICallBackServiceHandler.java: 456)
at
org.eclipse.rwt.lifecycle.UICallBack.runNonUIThreadWithFakeC ontext(UICallBack.java:44)
at
org.eclipse.ui.internal.progress.JobManagerAdapter.findProgr essManager(JobManagerAdapter.java:168)
at
org.eclipse.ui.internal.progress.JobManagerAdapter.scheduled (JobManagerAdapter.java:149)
at
org.eclipse.core.internal.jobs.JobListeners$5.notify(JobList eners.java:49)
at
org.eclipse.core.internal.jobs.JobListeners.doNotify(JobList eners.java:96)
at
org.eclipse.core.internal.jobs.JobListeners.scheduled(JobLis teners.java:162)
at org.eclipse.core.internal.jobs.JobManager.schedule(JobManage r.java:976)
at
org.eclipse.core.internal.jobs.InternalJob.schedule(Internal Job.java:376)
at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:435)
at
org.eclipse.jdt.internal.core.JavaModelManager.startup(JavaM odelManager.java:4361)
at org.eclipse.jdt.core.JavaCore.start(JavaCore.java:4906)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2 .run(BundleContextImpl.java:1009)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tartActivator(BundleContextImpl.java:1003)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:984)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.star t(AbstractBundle.java:265)
at
org.eclipse.osgi.framework.util.SecureAction.start(SecureAct ion.java:400)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter .postFindLocalClass(EclipseLazyStarter.java:111)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLoc alClass(ClasspathManager.java:427)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.fin dLocalClass(DefaultClassLoader.java:193)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findLo calClass(BundleLoader.java:368)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:444)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
at java.lang.ClassLoader.loadClass(Unknown Source)
at
org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader.java:313)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.java:227)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.load Class(AbstractBundle.java:1274)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI .createExecutableExtension(RegistryStrategyOSGI.java:160)
at
org.eclipse.core.internal.registry.ExtensionRegistry.createE xecutableExtension(ExtensionRegistry.java:867)
at
org.eclipse.core.internal.registry.ConfigurationElement.crea teExecutableExtension(ConfigurationElement.java:243)
at
org.eclipse.core.internal.registry.ConfigurationElementHandl e.createExecutableExtension(ConfigurationElementHandle.java: 51)
at
org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.addModifyListener(PreferenceServiceRegistryHelper. java:90)
at
org.eclipse.core.internal.preferences.PreferenceServiceRegis tryHelper.getModifyListeners(PreferenceServiceRegistryHelper .java:186)
at
org.eclipse.core.internal.preferences.PreferencesService.fir ePreApplyEvent(PreferencesService.java:436)
at
org.eclipse.core.internal.preferences.PreferencesService.app lyPreferences(PreferencesService.java:120)
at
org.eclipse.core.internal.preferences.PreferencesService.imp ortPreferences(PreferencesService.java:674)
at com.test.misc.MyPreferences.importPreferences(Preferences.ja va:297)
at com.test.misc.MyPreferences.<init>(Preferences.java:77)
at com.test.Application.createUI(Application.java:30)
at
org.eclipse.rwt.internal.lifecycle.EntryPointManager.createU I(EntryPointManager.java:92)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWT LifeCycle.java:231)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:119)
at java.lang.Thread.run(Unknown Source)
|
|
|
|
|
|
|
Re: importPreferences throws exception [message #132732 is a reply to message #132722] |
Wed, 13 May 2009 10:48   |
Eclipse User |
|
|
|
Roland wrote:
> Oh sorry, just paste old one again.
>
> public class Application implements IEntryPoint {
> private Display display;
>
> public int createUI() {
> ISessionStore store = RWT.getSessionStore();
> store.addSessionStoreListener( new MySessionStoreListener() );
> new Preferences().import();
Just follow the stack trace, in ProgressInfoItem.init() the display
is needed to retrieve a system color. If there is none, a NPE occurs.
Does that answer your question?
>
> display = PlatformUI.createDisplay();
>
> return PlatformUI.createAndRunWorkbench( display, new
> ApplicationWorkbenchAdvisor() );
> }
> }
>
> The display is created later (after import the preferences).
>
>
> Roland
>
>
> Rüdiger Herrmann schrieb:
>> Roland,
>>
>> I don't see the difference between the two snippets.
>>
>> Cheers,
>> Rüdiger
>>
>> Roland wrote:
>>> Hi,
>>>
>>> I found the problem.
>>>
>>> In the EntryPoint I created a Display before I import the Preferences.
>>>
>>> public class Application implements IEntryPoint {
>>> private Display display;
>>>
>>> public int createUI() {
>>> display = PlatformUI.createDisplay();
>>> ISessionStore store = RWT.getSessionStore();
>>> store.addSessionStoreListener( new MySessionStoreListener() );
>>> new Preferences().import();
>>> return PlatformUI.createAndRunWorkbench( display, new
>>> ApplicationWorkbenchAdvisor() );
>>> }
>>> }
>>>
>>> Now I changed it to the following.
>>>
>>>
>>> public class Application implements IEntryPoint {
>>> private Display display;
>>>
>>> public int createUI() {
>>> display = PlatformUI.createDisplay();
>>> ISessionStore store = RWT.getSessionStore();
>>> store.addSessionStoreListener( new MySessionStoreListener() );
>>> new Preferences().import();
>>> return PlatformUI.createAndRunWorkbench( display, new
>>> ApplicationWorkbenchAdvisor() );
>>> }
>>> }
>>>
>>> And now there is no exception thrown.
>>>
>>> But I don't really understand this.
>>>
>>> Roland
>>>
>>> Rüdiger Herrmann schrieb:
>>>> Roland,
>>>>
>>>> line 164 in ProgressInfoItem.java points to getWorkbench() or
>>>> getDisplay(). Does any of these return null?
>>>> If so you are most likely running the code outside a session. E.g.
>>>> in Activator#start() or from within a background thread.
>>>>
>>>> HTH
>>>> Rüdiger
|
|
|
|
|
|
|
Re: importPreferences throws exception [message #133575 is a reply to message #133034] |
Wed, 20 May 2009 02:06  |
Eclipse User |
|
|
|
Hi,
I can do so. But this week I have no time.
Roland
Rüdiger Herrmann schrieb:
> Roland Siebert wrote:
>> Sorry. :) My English is somethimes not so good.
>>
>> old version:
>>
>> 1. create display
>> 2. import preferences
>> 3. NPE at ProgressInfoItem.init(), because there is no display
>>
>> new version:
>>
>> 1. import preferences
>> 2. no NPE at ProgressInfoItem.init(), because there is a display
>> 3. create display
>>
>> What I don't understand is, that I create in my old version a display
>> before point 3. ,but there is none.
>> And when create the display after this point, it exists one.
>>
>> Hope you understand me. :)
> Yes, now I got it:) But I doubt that your observations are right. Did
> you double check that? Can you post a self-contained snippet to
> demonstrate that (snippets from previous posts don't compile)?
>
>
>>
>> Roland
|
|
|
Powered by
FUDForum. Page generated in 0.06749 seconds