changeset 1461:a1070aa6e46f

made usable with jdk9 again * acinclude.m4: IT_CHECK_FOR_CLASS removed no longer valid -Xmodule usage * launcher/launchers.in: made immune to missing plugin jar * netx/net/sourceforge/jnlp/jdk89acesses/SunMiscLauncher.java: moved to reflection, made javaws buildable under jdk9
author Jiri Vanek <jvanek@redhat.com>
date Wed, 19 Jul 2017 17:06:18 +0200
parents ebb1725ebfd7
children e543b472fd2c
files ChangeLog acinclude.m4 launcher/launchers.in netx/net/sourceforge/jnlp/jdk89acesses/SunMiscLauncher.java
diffstat 4 files changed, 24 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jul 18 17:28:21 2017 +0200
+++ b/ChangeLog	Wed Jul 19 17:06:18 2017 +0200
@@ -1,3 +1,11 @@
+2017-07-19  Jiri Vanek <jvanek@redhat.com>
+
+	made usable with jdk9  again
+	* acinclude.m4: IT_CHECK_FOR_CLASS removed no longer valid -Xmodule usage
+	* launcher/launchers.in: made immune to missing plugin jar
+	* netx/net/sourceforge/jnlp/jdk89acesses/SunMiscLauncher.java: moved to reflection, made javaws buildable under jdk9
+
+
 2017-07-18  Jiri Vanek <jvanek@redhat.com>
 
 	* netx/net/sourceforge/jnlp/security/dialogs/CertsInfoPane.java: HexEncoder loaded by reflection
--- a/acinclude.m4	Tue Jul 18 17:28:21 2017 +0200
+++ b/acinclude.m4	Wed Jul 19 17:06:18 2017 +0200
@@ -506,7 +506,6 @@
 # fourth, optional is module
 MODULE_NAME="$4"
 if test -n "$MODULE_NAME" ; then
-  XMODULE="-Xmodule:$MODULE_NAME"
   PATCH_MODULE="--patch-module $MODULE_NAME=."
 fi
 PKGPATH=`echo $3 | sed "s;\\.;/;g" `
@@ -530,7 +529,7 @@
 }
 ]
 EOF
-if $JAVAC -cp . $XMODULE $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
+if $JAVAC $PATCH_MODULE -cp . $JAVACFLAGS -nowarn $CLASS >&AS_MESSAGE_LOG_FD 2>&1; then
   if $JAVA $PATCH_MODULE -classpath . $BYTECODE >&AS_MESSAGE_LOG_FD 2>&1; then
       it_cv_$1=yes;
   else
--- a/launcher/launchers.in	Tue Jul 18 17:28:21 2017 +0200
+++ b/launcher/launchers.in	Wed Jul 19 17:06:18 2017 +0200
@@ -89,10 +89,14 @@
 k=$((k+1))
 # jsobject must be pathched separately from plugin
 # otherwise netscape pkg would be shared by two modules, which is forbiden
-COMMAND[k]="--patch-module"
-k=$((k+1))
-COMMAND[k]="jdk.jsobject=@JSOBJECT_JAR@"
-k=$((k+1))
+JSOBJECT_JAR=@JSOBJECT_JAR@
+# plugin jar may not be built
+if [ ! "x$JSOBJECT_JAR" == "x" ] ; then
+  COMMAND[k]="--patch-module"
+  k=$((k+1))
+  COMMAND[k]="jdk.jsobject=$JSOBJECT_JAR"
+  k=$((k+1))
+fi
 
 COMMAND[k]="--add-reads"
 k=$((k+1))
--- a/netx/net/sourceforge/jnlp/jdk89acesses/SunMiscLauncher.java	Tue Jul 18 17:28:21 2017 +0200
+++ b/netx/net/sourceforge/jnlp/jdk89acesses/SunMiscLauncher.java	Wed Jul 19 17:06:18 2017 +0200
@@ -32,6 +32,7 @@
  statement from your version.*/
 package net.sourceforge.jnlp.jdk89acesses;
 
+import java.lang.reflect.Method;
 import javax.swing.ImageIcon;
 import net.sourceforge.jnlp.util.logging.OutputController;
 
@@ -44,8 +45,12 @@
 
     public static ImageIcon getSecureImageIcon(String resource) {
         try {
-            return new ImageIcon((new sun.misc.Launcher()).getClassLoader().getResource(resource));
-        } catch (java.lang.NoClassDefFoundError ex) {
+            Class clazz = Class.forName("sun.misc.Launcher");
+            Object obj  = clazz.newInstance();
+            Method m = clazz.getMethod("getClassLoader");
+            ClassLoader cl = (ClassLoader) m.invoke(obj);
+            return new ImageIcon(cl.getResource(resource));
+        } catch (Exception ex) {
             OutputController.getLogger().log(ex);
             OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, "sun.misc.Launcher not found. Running jdk9 or higher? Using unsecure BootClassLoader");
             return new ImageIcon(ClassLoader.getSystemClassLoader().getParent().getResource(resource));