skin: support java 9 72/159872/3
authorminkee.lee <minkee.lee@samsung.com>
Thu, 9 Nov 2017 11:19:26 +0000 (20:19 +0900)
committerminkee.lee <minkee.lee@samsung.com>
Wed, 22 Nov 2017 12:23:55 +0000 (21:23 +0900)
1. (W/A) In java 9, jre option (--add-modules) is needed
to use JAXB APIs.

2. find a java path using "java.home"

Change-Id: Ie14b0b737746178e18e12c097ace652ec3e54b9e
Signed-off-by: minkee.lee <minkee.lee@samsung.com>
(cherry picked from commit a2ca6dc0f7c3b0616b07cc7324ef727ae67551ee)

tizen/src/emulator_common.h
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java

index d6c243c8317cb561374857b8e77aded911e1cea2..99969c9211f7e7543b85a3c4aad5f41fda95a5d6 100644 (file)
 #define JAR_SKINFILE "emulator-skin.jar"
 #define JAVA_LIBRARY_PATH "-Djava.library.path"
 
+/* (W/A) for java 9,
+ *   '--add-modules' should be added for JAXB.
+ *   '-XX:+IgnoreUnrecognizedVMOptions' is for jre under version 9
+ */
 #ifdef CONFIG_DARWIN
 /* Must start the Java window on the first thread on Mac */
-#define JAVA_EXEOPTION "-XstartOnFirstThread -jar"
+#define JAVA_EXEOPTION "--add-modules=java.xml.bind -XX:+IgnoreUnrecognizedVMOptions -XstartOnFirstThread -jar"
 #else
-#define JAVA_EXEOPTION "-jar"
+#define JAVA_EXEOPTION "--add-modules=java.xml.bind -XX:+IgnoreUnrecognizedVMOptions -jar"
 #endif
 #define JAVA_SIMPLEMODE_OPTION "simple.msg"
 
index 5451389a31304f42bc7a3ae258f596ac3f9532c7..30ce986baae5f8f0caeae874a96a545336fd993e 100644 (file)
@@ -1945,40 +1945,27 @@ public class EmulatorSkin {
                                ProcessBuilder procEcp = new ProcessBuilder();
                                procEcp.redirectErrorStream(true);
                                // FIXME: appropriate running binary setting is necessary.
+                               String javaPath = System.getProperty("java.home");
+                               List<String> command = new ArrayList<String>();
                                if (SwtUtil.isWindowsPlatform()) {
-                                       if (proxyAddr != null && proxyPort != null) {
-                                               procEcp.command("java.exe", "-Dhttp.proxyHost="
-                                                               + proxyAddr, "-Dhttp.proxyPort=" + proxyPort,
-                                                               "-jar", ecpPath, "vmname=" + emulName,
-                                                               "base.port=" + basePort);
-                                       } else {
-                                               procEcp.command("java.exe", "-jar", ecpPath, "vmname="
-                                                               + emulName, "base.port=" + basePort);
-                                       }
-                               } else if (SwtUtil.isMacPlatform()) {
-                                       if (proxyAddr != null && proxyPort != null) {
-                                               procEcp.command("java",
-                                                               "-Dhttp.proxyHost=" + proxyAddr,
-                                                               "-Dhttp.proxyPort=" + proxyPort, "-jar",
-                                                               "-XstartOnFirstThread", ecpPath, "vmname="
-                                                                               + emulName, "base.port=" + basePort);
-                                       } else {
-                                               procEcp.command("java", "-jar", "-XstartOnFirstThread",
-                                                               ecpPath, "vmname=" + emulName, "base.port="
-                                                                               + basePort);
-                                       }
-                               } else { /* Linux */
-                                       if (proxyAddr != null && proxyPort != null) {
-                                               procEcp.command("java",
-                                                               "-Dhttp.proxyHost=" + proxyAddr,
-                                                               "-Dhttp.proxyPort=" + proxyPort, "-jar",
-                                                               ecpPath, "vmname=" + emulName, "base.port="
-                                                                               + basePort);
-                                       } else {
-                                               procEcp.command("java", "-jar", ecpPath, "vmname="
-                                                               + emulName, "base.port=" + basePort);
-                                       }
+                                       command.add(javaPath + "\\bin\\java.exe");
+                               } else {
+                                       command.add(javaPath + "/bin/java");
+                               }
+                               command.add("--add-modules=java.xml.bind");
+                               command.add("-XX:+IgnoreUnrecognizedVMOptions");
+                               if (proxyAddr != null && proxyPort != null) {
+                                       command.add("-Dhttp.proxyHost=" + proxyAddr);
+                                       command.add("-Dhttp.proxyPort=" + proxyPort);
+                               }
+                               command.add("-jar");
+                               if (SwtUtil.isMacPlatform()) {
+                                       command.add("-XstartOnFirstThread");
                                }
+                               command.add(ecpPath);
+                               command.add("vmname=" + emulName);
+                               command.add("base.port=" + basePort);
+                               procEcp.command(command);
 
                                logger.info(procEcp.command().toString());