in Eclipse for Scout Developers Juno SR1 I get the following error when starting the minicrm-Tutotrial Application.

In our Company we need a proxy with authentication to access the internet, so our Eclipse for Java-development has written its secure storage to a file under the local user.
(user-directory)\.eclipse\org.eclipse.equinox.security\secure_storage

This file seems to provoke the message, since removing/renaming it removes the error.

!ENTRY org.eclipse.core.net 4 0 2012-12-10 14:17:20.773
!MESSAGE Unable to locate secure storage module (org.eclipse.equinox.security.windowspasswordprovider).
!STACK 0
org.eclipse.equinox.security.storage.StorageException: Unable to locate secure storage module (org.eclipse.equinox.security.windowspasswordprovider).
at org.eclipse.equinox.internal.security.storage.PasswordProviderSelector.findStorageModule(PasswordProviderSelector.java:190)
at org.eclipse.equinox.internal.security.storage.SecurePreferencesRoot.getModulePassword(SecurePreferencesRoot.java:231)
at org.eclipse.equinox.internal.security.storage.SecurePreferencesRoot.getPassword(SecurePreferencesRoot.java:224)
at org.eclipse.equinox.internal.security.storage.SecurePreferences.get(SecurePreferences.java:262)
at org.eclipse.equinox.internal.security.storage.SecurePreferencesWrapper.get(SecurePreferencesWrapper.java:106)
at org.eclipse.core.internal.net.ProxyType.loadProxyAuth(ProxyType.java:537)
at org.eclipse.core.internal.net.ProxyType.createProxyData(ProxyType.java:138)
at org.eclipse.core.internal.net.ProxyType.getProxyData(ProxyType.java:127)
at org.eclipse.core.internal.net.PreferenceManager.migrateInstanceScopePreferences(PreferenceManager.java:292)
at org.eclipse.core.internal.net.PreferenceManager.migrate(PreferenceManager.java:260)
at org.eclipse.core.internal.net.ProxyManager.checkMigrated(ProxyManager.java:404)
at org.eclipse.core.internal.net.ProxyManager.initialize(ProxyManager.java:269)
at org.eclipse.core.internal.net.Activator.start(Activator.java:181)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:469)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.scout.net.EclipseProxySelector.safeSelectImpl(EclipseProxySelector.java:163)
at org.eclipse.scout.net.EclipseProxySelector.reentrantSelectImpl(EclipseProxySelector.java:143)
at org.eclipse.scout.net.EclipseProxySelector.select(EclipseProxySelector.java:97)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at org.eclipse.scout.rt.client.servicetunnel.http.internal.InternalHttpServiceTunnel.createURLConnection(InternalHttpServiceTunnel.java:112)
at org.eclipse.scout.rt.client.servicetunnel.http.HttpServiceTunnel.createURLConnection(HttpServiceTunnel.java:70)
at org.eclipse.scout.rt.client.servicetunnel.http.internal.HttpBackgroundJob.runStatus(HttpBackgroundJob.java:77)
at org.eclipse.scout.rt.client.ClientJob.runTransactionWrapper(ClientJob.java:161)
at org.eclipse.scout.rt.client.ClientJob.run(ClientJob.java:149)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

This happens because you have no storage module registered for your product. To solve this you must add the correct platform dependent equinox security fragment to the affected product files.

Depending on your operating system, one of the following fragments must be added to your product files:
- org.eclipse.equinox.security.macosx
- org.eclipse.equinox.security.win32.x86
- org.eclipse.equinox.security.win32.x86_64

For linux you don't have to add a fragment.

For scout 3.9.0 >= M4 the scout sdk will automatically include the correct security fragments in the product files (where existing). See bug 396226 for more details.

I have the same problem with the minicrm tutorial (Eclipse 3.7 Indigo or Eclipse 4.2 Juno; Scout 3.8 ) and was happy to read about this solution.

However, I have added org.eclipse.equinox.security.win32.x86 to both the minicrm-swing-client-dev.product as well as minicrm-server-dev.product as dependencies, yet the exception is still thrown several times when starting the client. Do I need to do anything else, after adding those dependencies?