#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"
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());