From 09a7152b1dbe621e4c58e31b71c4699664ad9e61 Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Tue, 6 Feb 2018 10:25:59 -0800 Subject: [PATCH] Whitelist java9-rt-ext- output in rt export process If -verbose:gc is set, there can be gc log output in this process that prevents the directory from being properly extracted. Rather than blacklist possible output strings, I think it makes more sense to whitelist the specific output line that we're looking for. --- .../main/java/io/github/retronym/java9rtexport/Export.java | 4 ++++ src/universal/bin/sbt-launch-lib.bash | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) 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 6bb468531..806ab7d2b 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 @@ -29,6 +29,10 @@ public class Export { if (destination.equals("--rt-ext-dir")) { String v = System.getProperty("java.vendor") + "_" + System.getProperty("java.version"); v = v.replaceAll("\\W", "_").toLowerCase(); + /* + * The launch script greps for output starting with "java9-rt-ext-" so changing this + * string will require changing the grep command in sbt-launch-lib.bash. + */ Path rtExtDir = Paths.get(globalBase, "java9-rt-ext-" + v); System.out.println(rtExtDir.toString()); System.exit(0); diff --git a/src/universal/bin/sbt-launch-lib.bash b/src/universal/bin/sbt-launch-lib.bash index 222e4dbb9..a29495388 100755 --- a/src/universal/bin/sbt-launch-lib.bash +++ b/src/universal/bin/sbt-launch-lib.bash @@ -234,8 +234,9 @@ copyRt() { local at_least_9="$(expr $java_version ">=" 9)" if [[ "$at_least_9" == "1" ]]; then rtexport=$(rt_export_file) + # The grep for java9-rt-ext- matches the filename prefix printed in Export.java java9_ext=$("$java_cmd" ${JAVA_OPTS} ${SBT_OPTS:-$default_sbt_opts} ${java_args[@]} \ - -jar "$rtexport" --rt-ext-dir | grep -v Listening) + -jar "$rtexport" --rt-ext-dir | grep java9-rt-ext-) java9_rt=$(echo "$java9_ext/rt.jar") vlog "[copyRt] java9_rt = '$java9_rt'" if [[ ! -f "$java9_rt" ]]; then