diff options
author | Robby <robby@santoslab.org> | 2018-03-13 11:41:43 -0500 |
---|---|---|
committer | Nikolay Tatarinov <5min4eq.unity@gmail.com> | 2018-03-13 19:41:43 +0300 |
commit | a9d4eea6f5b81cdbef84724e612bf07954e2673c (patch) | |
tree | 8d9219a5c9f8e5153e71c21e797a4cb1ff32e733 /clientserver/src | |
parent | ac7eedc2cc858a778a63a7e03ccd03bac2676871 (diff) | |
download | mill-a9d4eea6f5b81cdbef84724e612bf07954e2673c.tar.gz mill-a9d4eea6f5b81cdbef84724e612bf07954e2673c.tar.bz2 mill-a9d4eea6f5b81cdbef84724e612bf07954e2673c.zip |
Fixes for non-interactive (client/server) mode on Java 9 (#221)
* Fixes for client/server mode on Java 9.
* Upgraded ammonite to 1.0.5-4-c0cdbaf.
Diffstat (limited to 'clientserver/src')
-rw-r--r-- | clientserver/src/mill/clientserver/Client.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/clientserver/src/mill/clientserver/Client.java b/clientserver/src/mill/clientserver/Client.java index 1870c8a4..ed2fe6ad 100644 --- a/clientserver/src/mill/clientserver/Client.java +++ b/clientserver/src/mill/clientserver/Client.java @@ -1,29 +1,38 @@ package mill.clientserver; +import io.github.retronym.java9rtexport.Export; import org.scalasbt.ipcsocket.UnixDomainSocket; import java.io.*; import java.net.URL; import java.nio.channels.FileChannel; +import java.nio.file.Files; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.Properties; public class Client { static void initServer(String lockBase) throws IOException{ - StringBuilder selfJars = new java.lang.StringBuilder(); + ArrayList<String> selfJars = new ArrayList<String>(); ClassLoader current = Client.class.getClassLoader(); while(current != null){ if (current instanceof java.net.URLClassLoader) { URL[] urls = ((java.net.URLClassLoader) current).getURLs(); for (URL url: urls) { - if (selfJars.length() != 0) selfJars.append(':'); - selfJars.append(url); + selfJars.add(url.toString()); } } current = current.getParent(); } - + if (!System.getProperty("java.specification.version").startsWith("1.")) { + selfJars.addAll(Arrays.asList(System.getProperty("java.class.path").split(File.pathSeparator))); + File rtFile = new File(lockBase + "/rt-" + System.getProperty("java.version") + ".jar"); + if (!rtFile.exists()) { + Files.copy(Export.export().toPath(), rtFile.toPath()); + } + selfJars.add(rtFile.getCanonicalPath()); + } ArrayList<String> l = new java.util.ArrayList<String>(); l.add("java"); Properties props = System.getProperties(); @@ -33,7 +42,7 @@ public class Client { if (k.startsWith("MILL_")) l.add("-D" + k + "=" + props.getProperty(k)); } l.add("-cp"); - l.add(selfJars.toString()); + l.add(String.join(File.pathSeparator, selfJars)); l.add("mill.ServerMain"); l.add(lockBase); new java.lang.ProcessBuilder() |