I have been trying to figure this out on and off for a couple of weeks now and today I spent a considerable amount of time with an old professor at UTD and we still were not able to figure it out.
I have an application I've been working on that I would like to deploy as a WebStart application. I have tried doing this Self Signed and Unsigned and get different errors for both.
Right now I'm just trying to get the application to launch locally on my machine (Running latest MacOS).
I have updated my JDK to 11.0.2. Tried different configurations with signed and unsigned certificates. Tried adding the application .jar and .jnlp files to the Site Exception List in Java Console (as well as other random things to see if any error changed, which it didn't.)
Occasionally I would see that activation.jar (for JavaBeans Activation Framework from Oracle) that I have added as a dependency would come up saying that the application was being blocked because the certificate had expired. But I haven't been able to recreate this in most of the configurations I've been trying recently. I have gone through as many of the even relatively close questions posted on here and none of them have gotten me any closer to a resolution.
JNLP file:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="file:/Users/Thomas/OneDrive/MSVO/dist/" href="launch.jnlp" spec="1.0+">
<information>
<title>MSVO</title>
<vendor>Thomas</vendor>
<homepage href=""/>
<description>MSVO</description>
<description kind="short">MSVO</description>
<icon href="splash_screen.jpg" kind="splash"/>
</information>
<update check="always"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="11+"/>
<jar href="MSVO.jar" main="true"/>
<jar href="lib/commons-io-2.6.jar"/>
<jar href="lib/joda-time-2.10.1.jar"/>
<jar href="lib/mail.jar"/>
<jar href="lib/mysql-connector-java-8.0.15.jar"/>
<jar href="lib/smtp-1.4.4.jar"/>
<jar href="lib/swingx-all-1.6.4.jar"/>
<jar href="lib/AbsoluteLayout.jar"/>
<extension href="jnlpcomponent1.jnlp"/>
</resources>
<application-desc main-class="Controller.MSVO_controller">
</application-desc>
For Unsigned I get the following exception:
java.lang.UnsupportedClassVersionError: Controller/MSVO_controller has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
When I run it as Self Signed I get:
Let me know if you need any other information and I will gladly update this.
Not sure where to go from here.
I have a java web start application, that I try to start via
javaws.exe https://localhost:8888/myApplication/myApplication.jnlp
nothing happens (no error message; I see no process starting in the task list).
If I start it via
javaws.exe -verbose https://localhost:8888/myApplication/myApplication.jnlp
the application starts.
I can also start the application when using
javaws.exe -viewer https://localhost:8888/myApplication/myApplication.jnlp
and then starting the application from the java cache viewer.
What is the difference, that might trigger the application to run, when in verbose mode or via the viewer? Here is my jnlp file:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://localhost:8888/myApplication" href="myApplication.jnlp">
<information>
....
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.8.0_60+" href="http://java.sun.com/products/autodl/j2se" max-heap-size="500m" initial-heap-size="250m"/>
<!-- some jars are referenced -->
<property name="sun.java2d.d3d" value="false" />
</resources>
<resources os="Windows">
<nativelib href="mylib.jar" download="eager" />
</resources>
<application-desc main-class="myClass">
<argument>-initLogging</argument>
<argument>SETPROPERTYjavax.net.ssl.trustStore</argument>
<argument>_UNDEFINED_</argument>
<argument>SETPROPERTYjavax.net.ssl.trustStoreType</argument>
<argument>_UNDEFINED_</argument>
<argument>SETPROPERTYjavax.net.ssl.trustStorePassword</argument>
<argument>_UNDEFINED_</argument>
<argument>-locale</argument>
<argument>_UNDEFINED_</argument>
<argument>-serviceHost</argument>
<argument>_UNDEFINED_</argument>
<argument>-serviceProtocol</argument>
<argument>_UNDEFINED_</argument>
<argument>-servicePort</argument>
<argument>_UNDEFINED_</argument>
<argument>-trustStrategy</argument>
<argument>_UNDEFINED_</argument>
</application-desc>
</jnlp>
I activated the trace and log output and found an Exception occured:
java.io.FileNotFoundException: C:\ProgramData\Oracle\Java\java.settings.cfg (Das System kann den angegebenen Pfad nicht finden)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at com.sun.deploy.config.WinPlatform.readSystemConfig(Unknown Source)
at com.sun.deploy.config.WinPlatform.getSponsorOffersDisabledSettings(Unknown Source)
at com.sun.deploy.config.ClientConfig.getSponsorOffersDisabledSettings(Unknown Source)
at com.sun.deploy.panel.AdvancedProperties.saveSponsorOfferingSettings(Unknown Source)
at com.sun.deploy.panel.ControlPanel.apply(Unknown Source)
at com.sun.deploy.panel.ControlPanel.<init>(Unknown Source)
at com.sun.deploy.panel.ControlPanel.main(Unknown Source)
at com.sun.javaws.Main.launchJavaControlPanel(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Then I found this page:
https://bugs.openjdk.java.net/browse/JDK-8134475
When I activate the java browser content (Java Control Panel > Security Tab > select checkbox "Enable content for browser and Web Start application").
Then the application started...
But the problem is: I do not know why!
I had the problem, too (see my comment My java web start application only starts when verbose is set)
I solved this problem by updating Java, i.e. reinstalling Java. The file C:\ProgramData\Oracle\Java\java.settings.cfg was created again and this new java installation could open web start applications again correctly. Although older versions still had the same bug.
After an update of Java with Java 9 I need to "Enable Applets and Web Start in the browser" in the security tab of the Java control panel.
I have simple-as-can-be Web Start application sitting on a file server. The directory consists of the following:
foo__V1.1.jar
runfoo.jnlp
The contents of runfoo.jnlp is as follows:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" href="http://myserver.com/runfoo.jnlp" codebase="http://myserver.com">
<information>
<title>Foo</title>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.7.0_06+" href="http://java.sun.com/products/autodl/j2se" />
<jar href="foo.jar" main="true" version="1.0+"/>
<property name="jnlp.versionEnabled" value="true"/>
</resources>
<application-desc name="Foo" main-class="com.myserver.foo.Foo" width="640" height="480" />
<update check="always" policy="always" />
</jnlp>
The issue is that Web Start is attempting to access a file at http://myserver.com/runfoo.jnlp?version-id=1.0%2B, and not finding it.
I assume there's some extra step required to have Web Start automatically grab the latest jar version in this simple instance, but after a lot of Googling all I've found is the same steps over and over:
rename file to <file_name>__V<versionnumber>.jar
Add the versionEnabled property to the jnlp
enjoy versioned goodness
The jnlp file runs absolutely fine when I specify an explicit file name, but always fails when I've tried to implement versioning.
I'm sure I'm missing something vital but I haven't been able to find it anywhere. I'm guessing that although my set-up is simple, it's not simple-as-can-be-and-also-work.
Any help will be much appreciated :)
The explicit exception is:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: (http://myserver.com/foo.jar?version-id=1.0%2B, 1.0+)
I've also tried removing the + from the version specification and the same error occurs (apart from a missing plus of course). Writting foo__V1.1.jar in the jnlp file works but of course defeats the whole point of this.
The versioned file names are a convention used by the JNLP download servlet to know what to serve when the client asks for lib.jar?version=something. You need the download servlet on the server side (or you need to duplicate its behaviour in mod_rewrite rules or similar), just the plain files with versions names is not enough.
For followers, a similar issue for me
java.io.IOException: Error returned: 10 Could not locate resource
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
"unable to launch application"
com.sun.deploy.net.FailedDownloadException: Unable to load resource: (http://host:port/webapp_name/app/jar-name.jar?version-id=1.5.0-20160707.182810-19, 1.5.0-20160707.182810-19)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
meant "the special internal file version.xml didn't match up right with the filenames deployed and existent in the web-app directory":
ref: http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html
Java 7 on 32-bit Windows 7 - Java Webstart - Unable to load resource
I can't launch any java webstart application on a 32-bit Windows 7 system.
E.g. ArgoUML - http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp
Everything works fine with Java 6, but with Java 7 I get this kind of errors:
Unable to load resource: java.io.IOException: Error writing to
server or java.net.SocketException: Connection reset
Java version:
Java Web Start 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) Client VM
Here is the trace log:
Log started: pe, 21 syys 2012 21:04:19 +0300
basic: Java part started
basic: jnlpx.jvm: C:\Program Files\Java\jre7\bin\javaw.exe
basic: jnlpx.splashport: 52540
basic: jnlpx.remove: true
basic: jnlpx.heapsize: NULL,512m
network: Loading user-defined proxy configuration ...
network: Done.
network: Browser is ChromeHTML
network: Browser is IE
network: Loading proxy configuration from Internet Explorer ...
network: Done.
network: Loading direct proxy configuration ...
network: Done.
network: Proxy Configuration: No proxy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
security: property package.definition value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
basic: Running JVMParams: [JVMParameters: isSecure: true, args: -Xmx512m]
-> [JVMParameters: isSecure: true, args: -Xmx512m]
network: Created version ID: 1.7.0.07
network: Created version ID: 1.7
network: Created version ID: 2.2.1
temp: new XMLParser with source:
temp: <?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for launching ArgoUML with WebStart -->
<jnlp
spec="1.0+"
codebase="http://argouml-downloads.tigris.org/maven2"
href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
<information>
<title>ArgoUML Latest Stable Release 0.34</title>
<vendor>Tigris.org (Open Source)</vendor>
<homepage href="http://argouml.tigris.org/"/>
<description>ArgoUML application.
This is the latest stable release.
</description>
<description kind="short">ArgoUML 0.34</description>
<icon href="http://argouml.tigris.org/images/argologo16x16.gif" width="16" height="16" />
<icon href="http://argouml.tigris.org/images/argologo32x32.gif" width="32" height="32" />
<icon href="http://argouml.tigris.org/images/argologo64x64.gif" width="64" height="64" />
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" max-heap-size="512m"/>
<jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar"/>
....
<property name="argouml.modules"
value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.JavaImport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.php.generator.ModulePHP4;org.argouml.language.php.generator.ModulePHP5;org.argouml.language.sql.SqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport" />
</resources>
<application-desc main-class="org.argouml.application.Main"/>
</jnlp>
temp:
returning ROOT as follows:
<jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
<information>
<title>ArgoUML Latest Stable Release 0.34</title>
<vendor>Tigris.org (Open Source)</vendor>
<homepage href="http://argouml.tigris.org/"/>
<description>ArgoUML application.
This is the latest stable release.
</description>
<description kind="short">ArgoUML 0.34</description>
<icon href="http://argouml.tigris.org/images/argologo16x16.gif" width="16" height="16"/>
<icon href="http://argouml.tigris.org/images/argologo32x32.gif" width="32" height="32"/>
<icon href="http://argouml.tigris.org/images/argologo64x64.gif" width="64" height="64"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" max-heap-size="512m"/>
<jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar"/>...
<property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.JavaImport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.php.generator.ModulePHP4;org.argouml.language.php.generator.ModulePHP5;org.argouml.language.sql.SqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
</resources>
<application-desc main-class="org.argouml.application.Main"/>
</jnlp>
temp: returning LaunchDesc from XMLFormat.parse():
<jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2/" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
<information>
<title>ArgoUML Latest Stable Release 0.34</title>
<vendor>Tigris.org (Open Source)</vendor>
<homepage href="http://argouml.tigris.org/"/>
<description>ArgoUML application.
This is the latest stable release.
</description>
<description kind="short">ArgoUML 0.34</description>
<icon href="http://argouml.tigris.org/images/argologo16x16.gif" height="16" width="16" kind="default"/>
<icon href="http://argouml.tigris.org/images/argologo32x32.gif" height="32" width="32" kind="default"/>
<icon href="http://argouml.tigris.org/images/argologo64x64.gif" height="64" width="64" kind="default"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources>
<java max-heap-size="536870912" version="1.6+"/>
<jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar" download="eager" main="false"/>
...
<property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.JavaImport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.php.generator.ModulePHP4;org.argouml.language.php.generator.ModulePHP5;org.argouml.language.sql.SqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
</resources>
<application-desc main-class="org.argouml.application.Main"/>
</jnlp>
basic: new Launcher:
<jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2/" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
<information>
<title>ArgoUML Latest Stable Release 0.34</title>
<vendor>Tigris.org (Open Source)</vendor>
<homepage href="http://argouml.tigris.org/"/>
<description>ArgoUML application.
This is the latest stable release.
</description>
<description kind="short">ArgoUML 0.34</description>
<icon href="http://argouml.tigris.org/images/argologo16x16.gif" height="16" width="16" kind="default"/>
<icon href="http://argouml.tigris.org/images/argologo32x32.gif" height="32" width="32" kind="default"/>
<icon href="http://argouml.tigris.org/images/argologo64x64.gif" height="64" width="64" kind="default"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources>
<java max-heap-size="536870912" version="1.6+"/>
<jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar" download="eager" main="false"/>
....
<property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.JavaImport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.php.generator.ModulePHP4;org.argouml.language.php.generator.ModulePHP5;org.argouml.language.sql.SqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
</resources>
<application-desc main-class="org.argouml.application.Main"/>
</jnlp>
network: prepareToLaunch: offlineOnly=false
network: Cache entry not found [url: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp, version: null]
network: Cache entry not found [url: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp, version: null]
network: Cache entry not found [url: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp, version: null]
network: Connecting http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp with proxy=DIRECT
network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
java.io.IOException: Error writing to server
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine._downloadCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
network: Connecting http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp with proxy=DIRECT
network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine._downloadCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
preloader: Construct preloader delegate
network: Connecting socket://127.0.0.1:52540 with proxy=DIRECT
#### Java Web Start Error:
#### Unable to load resource: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp
Problem seems to be in Java 7 IPv6 in Windows environment.
Solution was adding:
<j2se version="1.6.10+" href="http://java.sun.com/products/autodl/j2se"
java-vm-args="-Djava.net.preferIPv4Stack=true"/>
(I also added manually java.exe and javaws.exe to exception list in Windows Firewall and F-Secure.)
Thanks to Richard Conway: http://grokkingis.blogspot.fi/2012/08/work-arounds-windows-firewall-blocking.html?showComment=1349808752760#c2225417445483685032
So I'm a bit confused on how to sign a jar in order for it to run as a jnlp.
At present I have a jar, it runs, starts to download and verify stuff, then it gets to the end and a window pops up saying it's unable to launch, then it gives the exception:
JNLPException[category: Launch File Error : Exception: null : LaunchDesc:
<jnlp codebase="http:/SomeHost:8080/_test/" href="jnlpcomponent1.jnlp" spec="1.0+">
<information>
<title>jnlpcomponent1</title>
<vendor>SUN_MICR</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<jar href="lib/activation.jar" download="eager"/>
<jar href="lib/mail.jar" download="eager"/>
</resources>
<component-desc/>
</jnlp>
]
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
I am fairly sure this has something to do with the jar being signed wrong / poorly... I could use some help in understanding what's going on here and how to fix it though.
Thanks a lot.
I am fairly sure this has something to do with the jar being signed
wrong / poorly
Exactly that happent, one of your jars isn't signed (properly)
What is always working for me:
unzip all jars than sign with 1 process. If is confirmed as it working, than I will remove 1-2 jar to match the original deployment design. And you will know in what jar is the problem, than easier to fix it.
You can use ANT to sign the JAR file. This way you can sign your files from within your IDE and it makes for a faster work-flow for when you deploy your appplication. Every change requires that you re-sign your application.
<project name="YourProject" default="dist" basedir="jarsigning">
<target name="signMainJar">
<signjar jar="../dist/YourApp.jar" destDir="signed" alias="WhateverYouSetIt2"
keystore="fileNameOfCerticate" storepass="passw03d" lazy="true" />
<echo message="The file was signed." />
</target>
<!-- Use this if you are using any libraries. These also need to be signed. -->
<target name="signLibs">
<signjar destDir="signed" alias="WhateverYouSetIt2"
keystore="fileNameOfCerticate" storepass="passw03d" force="true">
<path>
<fileset dir="lib" includes="*.jar" />
</path>
</signjar>
<echo message="The library files were signed." />
</target>
</project>
Before you can run this script, you need to first create a jarsigning directory and place a certificate (key) to be used for signing. Inside that folder, create a folder called "signed" and this is where your signed code will be placed by the script. Use the keystore tool to create a self-signed certificate if you have not purchased one from a granting authority like Verisign or GoDaddy.