FULL PRODUCT VERSION : java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows XP [Version 5.1.2600] A DESCRIPTION OF THE PROBLEM : An old version of our app wants to use JRE 1.4. The JNLP file requests to be run with a 1.4 JRE. However, if Java 1.6.0_20 is installed, the 6.0_20 version of webstart downloads the application and launches the app with an installed version of 1.4. This is evident from: Java Web Start 1.6.0_20 Using JRE version 1.4.2_10-b03 Java HotSpot(TM) Client VM STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : To reproduce this bug just create a JNLP file that references a simple java class from a JAR-file, where <j2se version="1.4"> and run it with java web start (1.6.0_20). 1) Build the app from the supplied build source code and the build script 2) run the generated file "dist/jwstest.jnlp" with javaws (1.6.0_20) 3) See the jws console window Run this with using the webstart in 1.6.0_18 and it works perfectly. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Java Web Start 1.6.0_20 Verwendung der JRE-Version 1.4.2_10-b03 Java HotSpot(TM) Client VM Home-Verzeichnis des Benutzers = C:\Dokumente und Einstellungen\karneimm ---------------------------------------------------- c: Konsole l����schen f: Objekte in Finalisierungswarteschlange finalisieren g: Speicherbereinigung h: Diese Hilfemeldung anzeigen m: Speicherbelegung anzeigen o: Protokollierung ausl����sen p: Proxy-Konfiguration neu laden q: Konsole ausblenden r: Richtlinien-Konfiguration neu laden s: System- und Bereitstellungseigenschaften ausgeben t: Threadliste ausgeben v: Thread-Stack ausgeben 0-5: Trace-Stufe auf <n> setzen ---------------------------------------------------- Running. ACTUAL - Java Web Start 1.6.0_20 Verwendung der JRE-Version 1.4.2_10-b03 Java HotSpot(TM) Client VM Home-Verzeichnis des Benutzers = C:\Dokumente und Einstellungen\karneimm ---------------------------------------------------- c: Konsole l����schen f: Objekte in Finalisierungswarteschlange finalisieren g: Speicherbereinigung h: Diese Hilfemeldung anzeigen m: Speicherbelegung anzeigen o: Protokollierung ausl����sen p: Proxy-Konfiguration neu laden q: Konsole ausblenden r: Richtlinien-Konfiguration neu laden s: System- und Bereitstellungseigenschaften ausgeben t: Threadliste ausgeben v: Thread-Stack ausgeben 0-5: Trace-Stufe auf <n> setzen ---------------------------------------------------- #### Java Web Start Error: #### java.lang.NoSuchMethodError: sun.net.www.ParseUtil.encodePath(Ljava/lang/String;Z)Ljava/lang/String; Instead of running the program an error dialog with the following error is shown. com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source) ERROR MESSAGES/STACK TRACES THAT OCCUR : java.lang.NoSuchMethodError: sun.net.www.ParseUtil.encodePath(Ljava/lang/String;Z)Ljava/lang/String; at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source) at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source) at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- ------ Main.java -------------------- package app; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { System.out.println("Running."); JFrame f = new JFrame("Dummy"); JOptionPane.showMessageDialog(f, "Exit"); System.exit(0); } } ------ build.xml -------------------- <?xml version="1.0"?> <project name="jwstest" default="main" basedir="."> <description>build the jwstest app</description> <property name="compile.debug" value="true" /> <property name="compile.deprecation" value="false" /> <property name="compile.optimize" value="true" /> <property name="compile.source" value="1.2" /> <property name="compile.target" value="1.2" /> <!-- Folders --> <property name="src.dir" location="${basedir}/src" /> <property name="build.dir" location="${basedir}/build" /> <property name="build.classes.dir" location="${build.dir}/classes" /> <property name="build.bin.dir" location="${build.dir}/bin" /> <property name="dist.dir" location="${basedir}/dist" /> <!-- Project-specific Settings --> <property name="project.title" value="jwstest" /> <property name="project.version" value="1.0.0" /> <property name="project.vendor" value="Michael Karneim" /> <property name="project.homepage" value="file:///${dist.dir}" /> <property name="project.codebase" value="file:///${dist.dir}" /> <property name="project.jre" value="1.4.2_10" /> <property name="project.main" value="app.Main" /> <!-- Files --> <property name="classes.filename" value="${ant.project.name}.jar" /> <property name="classes.jarfile" value="${dist.dir}/${classes.filename}" /> <property name="jnlp.filename" value="${ant.project.name}.jnlp" /> <property name="jnlp.file" value="${dist.dir}/${jnlp.filename}" /> <!-- Filesets and paths --> <fileset id="build.classes.fileset" dir="${build.classes.dir}" description="Compiled classes" /> <path id="class.path"> <pathelement path="${currentenv.classpath}" /> </path> <!--#################### Init dynamic properties ########################--> <target name="init"> <tstamp> <format property="build.time" pattern="MMM/dd/yyyy hh:mm aa z" /> </tstamp> </target> <!--#################### Build targets ########################--> <target name="clean" depends="init" description="Clean up all generated files."> <delete dir="${dist.dir}" /> <delete dir="${build.dir}" /> </target> <target name="pre-compile" depends="init"> <delete dir="${build.classes.dir}" /> <mkdir dir="${build.classes.dir}" /> </target> <target name="compile" depends="init, pre-compile"> <javac classpathref="class.path" destdir="${build.classes.dir}" source="${compile.source}" target="${compile.target}" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}"> <src path="${src.dir}" /> </javac> </target> <target name="pre-dist" depends="init"> <delete dir="${dist.dir}" /> <mkdir dir="${dist.dir}" /> </target> <target name="create-classes-jar" depends="init, compile" description="Create jar with all classes"> <delete file="${classes.jarfile}" /> <jar destfile="${classes.jarfile}"> <fileset refid="build.classes.fileset" /> <manifest> <attribute name="Build-Date" value="${build.time}" /> <attribute name="Implementation-Title" value="${project.title}" /> <attribute name="Implementation-Version" value="${project.version}" /> <attribute name="Implementation-Vendor" value="${project.vendor}" /> </manifest> </jar> </target> <target name="create-jnlp-file" depends="init"> <delete file="${jnlp.file}" /> <echo file="${jnlp.file}" append="false"><![CDATA[ <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Discriptor 1.1//EN" "http://java.sun.com/dtd/JNLP-1.5.dtd"> <jnlp spec="1.0+" codebase="${project.codebase}" href="${jnlp.filename}"> <information> <title>${project.title}</title> <vendor>${project.vendor}</vendor> <homepage href="${project.homepage}" /> <description>${project.description}</description> </information> <resources> <j2se version="${project.jre}" href="http://java.sun.com/products/autodl/j2se" initial-heap-size="64m" max-heap-size="128m" /> <jar href="${classes.filename}" /> </resources> <application-desc main-class="${project.main}" /> </jnlp> ]]> </echo> </target> <target name="dist" depends="init, pre-dist, create-classes-jar, create-jnlp-file"> </target> <target name="main" depends="init, dist"> </target> </project> ---------- END SOURCE ---------- Release Regression From : 6u18 The above release value was the last known release where this bug was not reproducible. Since then there has been a regression.
|