From 39d850404555bd9da25adf0f4a5b758a08a955b5 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 4 Mar 2017 13:03:36 -0500 Subject: [PATCH] --rt-ext-dir returns a dir specific to JDK 9 ver --- .../io/github/retronym/java9rtexport/Export.java | 16 +++++++++++----- .../java9rtexport/{Copy.java => IO.java} | 2 +- src/universal/bin/sbt-launch-lib.bash | 6 ++---- src/universal/bin/sbt.bat | 5 ++--- 4 files changed, 16 insertions(+), 13 deletions(-) rename java9-rt-export/src/main/java/io/github/retronym/java9rtexport/{Copy.java => IO.java} (99%) diff --git a/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Export.java b/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Export.java index eee31ce46..6bb468531 100644 --- a/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Export.java +++ b/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Export.java @@ -10,23 +10,29 @@ import java.util.Map; public class Export { public static void main(String[] args) { try { - if (args.length == 0) { System.err.println("Usage:"); System.err.println(" java -jar java9-rt-export-*.jar $HOME/.sbt/java9-rt-ext/rt.jar"); System.err.println(" Exports rt.jar to the specified path."); System.err.println(""); - System.err.println(" java -jar java9-rt-export-*.jar --global-base"); + System.err.println(" java -jar java9-rt-export-*.jar --rt-ext-dir"); System.err.println(" Prints sbt global base."); System.exit(-1); } String destination = args[0]; + Path defaultGlobalBase = Paths.get(System.getProperty("user.home"), ".sbt", "0.13"); + String globalBase = System.getProperty("sbt.global.base", defaultGlobalBase.toString()); if (destination.equals("--global-base")) { - Path defaultGlobalBase = Paths.get(System.getProperty("user.home"), ".sbt", "0.13"); - String globalBase = System.getProperty("sbt.global.base", defaultGlobalBase.toString()); System.out.println(globalBase); System.exit(0); } + if (destination.equals("--rt-ext-dir")) { + String v = System.getProperty("java.vendor") + "_" + System.getProperty("java.version"); + v = v.replaceAll("\\W", "_").toLowerCase(); + Path rtExtDir = Paths.get(globalBase, "java9-rt-ext-" + v); + System.out.println(rtExtDir.toString()); + System.exit(0); + } FileSystem fileSystem = FileSystems.getFileSystem(URI.create("jrt:/")); Path path = fileSystem.getPath("/modules"); Path destPath = Paths.get(destination); @@ -37,7 +43,7 @@ public class Export { Iterator iterator = Files.list(path).iterator(); while(iterator.hasNext()) { Path next = iterator.next(); - Copy.copyDirectory(next, zipfs.getPath("/")); + IO.copyDirectory(next, zipfs.getPath("/")); } } } catch (IOException e) { diff --git a/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Copy.java b/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/IO.java similarity index 99% rename from java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Copy.java rename to java9-rt-export/src/main/java/io/github/retronym/java9rtexport/IO.java index 31c7e95d7..a57eaa392 100644 --- a/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/Copy.java +++ b/java9-rt-export/src/main/java/io/github/retronym/java9rtexport/IO.java @@ -9,7 +9,7 @@ import java.util.EnumSet; import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -public class Copy { +public class IO { public static void copyDirectory(final Path source, final Path target) throws IOException { Files.walkFileTree(source, EnumSet.of(FileVisitOption.FOLLOW_LINKS), diff --git a/src/universal/bin/sbt-launch-lib.bash b/src/universal/bin/sbt-launch-lib.bash index c66f5e849..c58f445da 100755 --- a/src/universal/bin/sbt-launch-lib.bash +++ b/src/universal/bin/sbt-launch-lib.bash @@ -182,11 +182,9 @@ checkJava() { copyRt() { if [[ "$java_version" > "8" ]]; then rtexport=$(rt_export_file) - sbt_global_dir=$("$java_cmd" ${JAVA_OPTS} ${SBT_OPTS:-$default_sbt_opts} ${java_args[@]} \ - -jar "$rtexport" --global-base) - java9_ext=$(echo "$sbt_global_dir/java9-rt-ext") + java9_ext=$("$java_cmd" ${JAVA_OPTS} ${SBT_OPTS:-$default_sbt_opts} ${java_args[@]} \ + -jar "$rtexport" --rt-ext-dir) java9_rt=$(echo "$java9_ext/rt.jar") - vlog "[copyRt] sbt_global_dir = '$sbt_global_dir'" vlog "[copyRt] java9_rt = '$java9_rt'" if [[ ! -f "$java9_rt" ]]; then echo Copying runtime jar. diff --git a/src/universal/bin/sbt.bat b/src/universal/bin/sbt.bat index a02088a23..12178b7c7 100644 --- a/src/universal/bin/sbt.bat +++ b/src/universal/bin/sbt.bat @@ -136,9 +136,8 @@ exit /B 1 if /I "%JAVA_VERSION%" GEQ "9" ( set rtexport=%SBT_HOME%java9-rt-export.jar - "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -jar "%rtexport%" --global-base > "%TEMP%.\global_base.txt" - set /p sbt_global_dir= < "%TEMP%.\global_base.txt" - set java9_ext=%sbt_global_dir%\java9-rt-ext + "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -jar "%rtexport%" --rt-ext-dir > "%TEMP%.\rtext.txt" + set /p java9_ext= < "%TEMP%.\rtext.txt" set java9_rt=%java9_ext%\rt.jar if not exist "%java9_rt%" (