# Webstart startet unter Linux, bei Windows nicht



## Siassei (21. Mrz 2010)

Servus,

unter dem Link: remove
findet ihr eine Webstart-Anwendung. Diese startet auf meinen Linux-Rechner ganz normal. Auf einen Windows-Rechner XP und 7 nicht. Woran kann das liegen?

Das ganze wurde mit Maven + Plugin zum signieren kompiliert.

Ausnahme: FailedDownloadException
gekapselte Ausnhame: IOException missing version response from server ....


----------



## Siassei (21. Mrz 2010)

```
<?xml version="1.0" encoding="utf-8"?>
<jnlp
    spec="1.5+"
    codebase="http://www.enzinger-th.de/abc/def"
    href="launch.jnlp">
  <information>
    <title>...</title>
    <vendor>....</vendor>
    <homepage href="http://www.enzinger-th.de"/>
    <description>....</description>
    <offline-allowed/>
  </information>
  <security>
     <all-permissions/>
  </security>
  <resources>
    <j2se version="1.5+" initial-heap-size="64m" max-heap-size="128m" />
     
<jar href="MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar" version="0.0.1-SNAPSHOT"/>
<jar href="Library-0.0.1-SNAPSHOT.jar" version="0.0.1-SNAPSHOT"/>
<jar href="log4j-1.2.15.jar" version="1.2.15"/>
<jar href="scala-library-2.8.0.Beta1.jar" version="2.8.0.Beta1"/>
<jar href="scala-swing-2.8.0.Beta1.jar" version="2.8.0.Beta1"/>
<jar href="commons-logging-1.0.4.jar" version="1.0.4"/>
<jar href="commons-cli-1.0.jar" version="1.0" main="true"/>
<jar href="commons-lang-1.0.jar" version="1.0"/>

  </resources>
  <application-desc main-class="edu.hs.regensburg.mechanik.gui.mohr.MohrscherSpannungskreisApp"/>
</jnlp>
```


----------



## Siassei (21. Mrz 2010)

Achja, es ist ein Platz ohne Tomcat & Co.


----------



## Siassei (22. Mrz 2010)

Keiner eine Idee? Bei Google kommen hunderte von Treffer, aber keine Lösung außer einen Tomcat aufzusetzen. Aber den habe ich nicht. Es muss doch auch ohne Tomcat gehen.

Unter alle Linux-Distributionen mit OpenJDK geht es. Bei Windows XP, Vista, 7 mit der J2SE von Sun geht es nicht :-( Hat hierfür jemand eine Lösung?


----------



## hansmueller (22. Mrz 2010)

Hallo,

ich glaube, da stimmt etwas mit der Versionierung nicht.
Wieso hast du die Versionsnummer im jar-Dateinamen?
Ich habe zwar noch nie mit der automatischen Versionierung gearbeitet, aber meines Wissens nach wird der Name aus dem Dateinamen der jar-Datei und dem Versionshinweis automatisch generiert.

Probier mal, ob es auch mit der Sun Runtime unter Linux funktioniert.

Vielleicht helfen dir folgende Links weiter:
Packaging JNLP Applications in a Web Archive
Pack200 and Version Download

MfG
hansmueller


----------



## Siassei (22. Mrz 2010)

Servus,

das ganze habe ich mit Maven compiliert. Da bildet Maven automatisch die Bezeichnung der Jar.
Aber das dürfte doch keine Rolle spielen. Ich dachte, dass ich die Versionierung und pack200 sowieso in der launch.jnlp explizit freischalten muss. Ist dem nicht so?

Ich habe das jetzt mal geändert. pack200 und die Versionierung abgeschaltet. Leider habe ich zur Zeit kein Zugriff auf Windows. Kann mir jemand mitteilen, ob es jetzt funktioniert?

Ausschnitt aus der pom.xml

```
<build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo.webstart</groupId>
        <artifactId>webstart-maven-plugin</artifactId>
        <executions>
           <execution>
              <phase>install</phase>

              <goals>
                 <goal>jnlp</goal> <!-- use jnlp, jnlp-inline or jnlp-single as appropriate -->
              </goals>
           </execution>
        </executions>
        <configuration>
           <!--outputDirectory></outputDirectory--> <!-- not required?? -->

           <!--
           Set to true to exclude all transitive dependencies. Default is false.
           -->
           <excludeTransitive>false</excludeTransitive>

           <!-- The path where the libraries are stored within the jnlp structure. not required. by default the libraries are within the working directory -->
           <!-- <libPath>lib</libPath> //-->

           <!-- [optional] transitive dependencies filter - if omitted, all transitive dependencies are included -->
<!--       <dependencies>
//-->        <!-- Note that only groupId and artifactId must be specified here. because of a limitation of the Include/ExcludesArtifactFilter -->
<!--         <includes>
                <include>commons-logging:commons-logging</include>
                <include>commons-cli:commons-cli</include>
             </includes>
//-->        <!-- excludes>
                <exclude></exclude>
             <excludes-->
<!--       </dependencies>
//-->
           <!--resourcesDirectory>${project.basedir}/src/main/jnlp/resources</resourcesDirectory--> <!-- default value -->

           <!-- JNLP generation -->
           <jnlp>
             <!-- default values -->
             <!--inputTemplateResourcePath>${project.basedir}</inputTemplateResourcePath-->
             <!--inputTemplate>src/main/jnlp/template.vm</inputTemplate--> <!-- relative to inputTemplateResourcePath -->
             <outputFile>launch.jnlp</outputFile> <!-- defaults to launch.jnlp -->

             <!-- used to automatically identify the jar containing the main class. -->
             <!-- this is perhaps going to change -->
             <mainClass>org.apache.commons.cli.BasicParser</mainClass>
           </jnlp>


           <!-- SIGNING -->
           <!-- defining this will automatically sign the jar and its dependencies, if necessary -->
           <sign>
             <keystore>MyKeyStore</keystore>
             <keypass>MyKeyPass</keypass>  <!-- we need to override passwords easily from the command line. ${keypass} -->
             <storepass>Thatisthepass</storepass> <!-- ${storepass} -->
             <!--storetype>fillme</storetype-->
             <alias>MyAlias</alias>

             <!--validity>fillme</validity-->

             <!-- only required for generating the keystore -->
             <dnameCn>www.hs-regensburg.de</dnameCn>
             <dnameOu>None</dnameOu>
             <dnameO>Hochschule Regensburg</dnameO>
             <dnameL>Regensburg</dnameL>
             <dnameSt>Galgenbergstraße</dnameSt>
             <dnameC>DE</dnameC>

             <verify>true</verify> <!-- verify that the signing operation succeeded -->

             <!-- KEYSTORE MANAGEMENT -->
             <keystoreConfig>
               <delete>true</delete> <!-- delete the keystore -->
               <gen>true</gen>       <!-- optional shortcut to generate the store. -->
             </keystoreConfig>
           </sign>

           <!-- BUILDING PROCESS -->

           <pack200>false</pack200>
           <!-- <gzip>true</gzip> --><!-- default force when pack200 false, true when pack200 selected ?? -->

           <!-- causes a version attribute to be output in each jar resource element, optional, default is false -->
           <outputJarVersions>false</outputJarVersions>

           <!--install>false</install--> <!-- not yet supported -->
           <verbose>true</verbose>

        </configuration>
      </plugin>
    </plugins>
  </build>
```


----------



## hansmueller (22. Mrz 2010)

Nein, funktioniert unter Windows immer noch nicht.

Folgende Fehlermeldungen:

Startdatei:

```
<?xml version="1.0" encoding="utf-8"?>
<jnlp
    spec="6.0+"
    codebase="http://www.enzinger-th.de/webstart/dev/"
    href="launch.jnlp">
  <information>
    <title>Mohrscher Spannungskreis</title>
    <vendor>Hochschule Regensburg</vendor>
    <homepage href="http://www.enzinger-th.de"/>
    <description>Hochschule Regensburg - Mechanik</description>
    <offline-allowed/>
  </information>
  <security>
     <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"
         initial-heap-size="64m" max-heap-size="128m" />
     
<jar href="MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar" version="0.0.1-SNAPSHOT"/>
<jar href="Library-0.0.1-SNAPSHOT.jar" version="0.0.1-SNAPSHOT"/>
<jar href="log4j-1.2.15.jar" version="1.2.15"/>
<jar href="scala-library-2.8.0.Beta1.jar" version="2.8.0.Beta1"/>
<jar href="scala-swing-2.8.0.Beta1.jar" version="2.8.0.Beta1"/>
<jar href="commons-logging-1.0.4.jar" version="1.0.4"/>
<jar href="commons-cli-1.0.jar" version="1.0" main="true"/>
<jar href="commons-lang-1.0.jar" version="1.0"/>

  </resources>
  <application-desc main-class="edu.hs.regensburg.mechanik.gui.mohr.MohrscherSpannungskreisApp"/>
</jnlp>
```

WebStart Ausnahme:

```
com.sun.deploy.net.FailedDownloadException: Ressource konnte nicht geladen werden: (http://www.enzinger-th.de/webstart/dev/MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar, 0.0.1-SNAPSHOT)
	at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
	at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
```

Gekapselte Ausnahme:

```
java.io.IOException: missing version response from server
	at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
	at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
	at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
```

Konsole:

```
#### Java Web Start Error:
#### Ressource konnte nicht geladen werden: (http://www.enzinger-th.de/webstart/dev/MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar, 0.0.1-SNAPSHOT)
```

WebStart findes die Datei MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar nicht.
Ich kann aber die Datei über die Url http://www.enzinger-th.de/webstart/dev/MohrscherSpannungskreis-0.0.1-SNAPSHOT.jar manuell herunterladen. Dies beweist, daß die Datei auf dem Server ist und downgeloadet werden kann.

Du könntest noch versuchen aus der jnlp-Datei im "jar"-Tag alle Versions-Attribute herauszunehmen. (Also nur die href-Attribute, ohne die Version.)
Und zwar bei ALLEN jar-Dateien.
Aus den Fehlermeldungen ist ersichtlich, daß Webstart noch nach einer Version sucht. (Sieht man an dem ", 0.0.1-SNAPSHOT") und die Meldung "missing version response from server".

MfG
hansmueller


----------



## Siassei (22. Mrz 2010)

Mist, da habe ich glatt was übersehen :-( Schäm
Wie sieht es jetzt aus?


----------



## hansmueller (22. Mrz 2010)

Nein, immer noch der gleiche Fehler wie oben.

MfG
hansmueller


----------

