Skip to main content

Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » RCP application failing on alternate runs via Java Web Start
RCP application failing on alternate runs via Java Web Start [message #1479858] Wed, 19 November 2014 20:00 Go to next message
David Dobbs is currently offline David DobbsFriend
Messages: 1
Registered: November 2014
Junior Member
So, I'm working on a Web Start RCP application that fails to launch (effectively) on alternate attempts if I have "Keep temporary files on my computer" disabled in the Java Control Panel. If I run the application once, it starts up; if I close it and start again within a few minutes, the second attempt will fail. A third attempt will succeed, but a fourth attempt within a few minutes of the third will fail. (Alternatively, waiting ~5 minutes seems to allow successful back-to-back launches.)

On the failing attempts, JWS goes through its typical download procedure, the Java console for the application appears, gets a large volume of stuff printed out, and then the application terminates.

I have found that I can manually delete @user.home/AppData/MyApp/configuration/org.eclipse.osgi, and that will prevent the failure.

There's no useful output produced in the Java console - I get some JWS stuff from debug that I've turned up, but nothing from Eclipse. There are no logs produced on failed runs in @user.home at all, from what I can tell. I've stepped through some of the startup process in the debugger, and it looks like something is causing EclipseStarter.isForcedRestart() to start returning true somewhere in the call to frameworkWiring.refreshBundles() - but I can't follow the logic in there well enough to troubleshoot it.

Anyone have any thoughts or suggestions - even just advice on how to proceed?

Thanks in advance!

Relevant excerpts from the JNLP file:
    <update check="always" policy="always" />
    <!--myapp.WebStartMainWrapper is used to bypass the restrictions on JNLP properties by removing "jnlp" prefix from certain property names.-->
    <application-desc main-class="myapp.WebStartMainWrapper">
        <j2se initial-heap-size="512M" max-heap-size="1024M" href="[link removed due to spam filter]" version="1.8+" />
		<jar href="plugins/myapp_1.0.0.qualifier.jar"/>
        <jar href="plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar"/>
        <!--This JNLP includes the standard Eclipse platform jars as well as some of ours-->
        <extension name="the feature" href="features/myapp.feature_1.0.0.2.jnlp"/>
        <property name="jnlp.eclipse.product" value="myapp.MyAppProductID"/>
        <property name="jnlp.osgi.splashPath" value="platform[:]/base/plugins/myApp"/>
        <property name="jnlp.osgi.locking" value="none"/>
        <property name="jnlp.osgi.parentClassloader" value="current"/>
        <property name="" value="osgi"/>
        <!-- based on -->
        <property name="jnlp.osgi.bundles" value="org.eclipse.core.runtime@2:start,org.eclipse.equinox.event@3:start,org.eclipse.equinox.ds@3:start"/>
    <resources os="Windows">
        <j2se version="1.8+"/>
        <property name="jnlp.osgi.instance.area" value="@user.home/AppData/MyApp/instance"/>
        <property name="jnlp.osgi.configuration.area" value="@user.home/AppData/MyApp/configuration"/>
        <property name="jnlp.osgi.install.area" value="@user.home/AppData/MyApp/install"/>

System configuration:
Windows 7, Core I7 processor
Running JDK 1.8.0_05, 64-bit

[Updated on: Thu, 20 November 2014 16:06]

Report message to a moderator

Re: RCP application failing on alternate runs via Java Web Start [message #1823913 is a reply to message #1479858] Fri, 03 April 2020 18:37 Go to previous message
Florian Kolbe is currently offline Florian KolbeFriend
Messages: 2
Registered: April 2020
Junior Member
Have you ever had a chance to resolve that issue?
I wrapped the main and it's returning with Exit Code 23.
According to the Source Code (and debugging), Equinox is requesting a restart.
I boiled it down to a method

Which again is called by

and this snippet: (Eclipse 4.14)
		Module systemModule = moduleDatabase.getModule(0);
		if (refreshTriggers.contains(systemModule) && Module.ACTIVE_SET.contains(systemModule.getState())) {
			return Collections.emptyList();

In the alternate run that works,

and refreshTriggers contains the System Module.

In the alternate run that does not work:

and refreshTriggers does not contain the System Module.

I can also tell that the so-called moduleDatabase is identical (with regard to bundle identities) both times.
Previous Topic:TLS / Changing DH key
Next Topic:Using composites to resolve dependencies
Goto Forum:

Current Time: Wed Sep 28 17:12:33 GMT 2022

Powered by FUDForum. Page generated in 0.02452 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top