Hi everybody, Does anyone know what the status of Java web start (the JNLP launcher) is with Harmony? There is no javaws launcher and javax.jnlp does not appear at http://www.kaffe.org/%7Estuart/japi/htmlout/h-jdk15-harmony. This makes sense because javax.jnlp does not part of the apis (as per http://java.sun.com/j2se/1.5.0/docs/) but instead falls into the "deployment technologies" bucket.
There seem to be several different open source JNLP implementations (http://jnlp.sourceforge.net/netx/compare.html) I poked at the Mozilla licensed one (OpenJNLP) today to see if it would work with Harmony. It is quite old and doesn't support security now but is a good thing to test.... I hacked it to recognize Windows XP and work marginally with the Sun VM (it pauses for a LONG time before starting the app). Anyway, I tried with Harmony and ran into an issue which I filed at http://issues.apache.org/jira/browse/HARMONY-3717. Working around that problem, I get further (it downloads and caches the application) but run into an issue with reflection on launch. I'm not sure what the source of that problem is (yet) but I can say that it only errors out on Harmony and not on the Sun JRE. Loading the Eclipse JNLP sample (http://www.eclipse.org/swt/jws/controlexample.jnlp) gives the following: Control Example] java.lang.reflect.InvocationTargetException [Control Example] at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java) [Control Example] at java.lang.reflect.Method.invoke(Method.java:381) [Control Example] at org.nanode.launcher.AppContext.execApp(Unknown Source) [Control Example] at org.nanode.launcher.AppContext.run(Unknown Source) [Control Example] at java.lang.Thread.run(Thread.java:661) [Control Example] Caused by: java.lang.VerifyError: (class: org/eclipse/swt/widgets/EventTable, method: sendEvent(Lorg/eclipse/swt/widgets/Event;)V) Data flow analysis error [Control Example] at org.eclipse.swt.widgets.Widget.addListener(Unknown Source) [Control Example] at org.eclipse.swt.widgets.Button.addSelectionListener(Unknown Source) [Control Example] at org.eclipse.swt.examples.controlexample.Tab.createOtherGroup(Tab.java:34 2) [Control Example] at org.eclipse.swt.examples.controlexample.AlignableTab.createOtherGroup(Al ignableTab.java:43) [Control Example] at org.eclipse.swt.examples.controlexample.Tab.createControlGroup(Tab.java: 139) [Control Example] at org.eclipse.swt.examples.controlexample.ButtonTab.createControlGroup(But tonTab.java:46) [Control Example] at org.eclipse.swt.examples.controlexample.Tab.createTabFolderPage(Tab.java :888) [Control Example] at org.eclipse.swt.examples.controlexample.ControlExample.<init>(ControlExa mple.java:60) [Control Example] at org.eclipse.swt.examples.controlexample.ControlExample.main(ControlExamp le.java:203) [Control Example] at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java) Loading the mpowerplayer app (http://webstart.mpowerplayer.com/index.jnlp) gives the following: [mpowerplayer] java.lang.reflect.InvocationTargetException [mpowerplayer] at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java) [mpowerplayer] at java.lang.reflect.Method.invoke(Method.java:381) [mpowerplayer] at org.nanode.launcher.AppContext.execApp(Unknown Source) [mpowerplayer] at org.nanode.launcher.AppContext.run(Unknown Source) [mpowerplayer] at java.lang.Thread.run(Thread.java:661) [mpowerplayer] Caused by: java.lang.VerifyError: (class: com/mpp/player/mpsc, method: <clinit>()V) Incompatible types for array assignment [mpowerplayer] at java.lang.ClassLoader.defineClass0(ClassLoader.java) [mpowerplayer] at java.lang.ClassLoader.defineClass(ClassLoader.java:417) [mpowerplayer] at java.security.SecureClassLoader.defineClass(Unknown Source) [mpowerplayer] at java.net.URLClassLoader.findClassImpl(Unknown Source) [mpowerplayer] at java.net.URLClassLoader$4.run(Unknown Source) [mpowerplayer] at java.net.URLClassLoader$4.run(Unknown Source) [mpowerplayer] at java.security.AccessController.doPrivilegedImpl(AccessController.java:17 1) [mpowerplayer] at java.security.AccessController.doPrivileged(AccessController.java:64) [mpowerplayer] at java.net.URLClassLoader.findClass(Unknown Source) [mpowerplayer] at org.nanode.launcher.cache.FileCacheClassLoader.findClass(Unknown Source) [mpowerplayer] at java.lang.ClassLoader.loadClass(ClassLoader.java:554) [mpowerplayer] at java.lang.ClassLoader.loadClass(ClassLoader.java:311) [mpowerplayer] at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java) Both apps that I tried do use some native code... Has anyone gotten any further than this with any JNLP implementations and Harmony? Is Javaws going to be part of Harmony? I see that BEA does not include javaws in their distributions of Java5. Is anyone working on this? Is there an implementation hiding in SVN somewhere? If MPL code is compatible, this might be a good path to go after for getting javax.jnlp and a start at webstart functionality. Regards, Chris Elford Intel SSG/Enterprise Solutions Software Division
