@@ -148,51 +148,29 @@ abstract class BaseBuildToolSuite extends MopedSuite(ScipJava.app) {
148148}
149149
150150object BaseBuildToolSuite {
151+ // Major version of the JVM that `java` on PATH resolves to. Compiled and
152+ // executed as a subprocess because the test JVM may differ from PATH.
151153 lazy val externalJavaVersion : Int = {
152154 val tmpDir = os.temp.dir()
153- var version = Option .empty[String ]
154155 try {
155156 os.write(tmpDir / " PrintJavaVersion.java" , PrintJavaVersion )
156-
157157 os.proc(" javac" , " PrintJavaVersion.java" ).call(cwd = tmpDir)
158-
159- version = Some (
160- os.proc(" java" , " PrintJavaVersion" ).call(cwd = tmpDir).out.text()
161- )
158+ os.proc(" java" , " PrintJavaVersion" )
159+ .call(cwd = tmpDir)
160+ .out
161+ .text()
162+ .trim
163+ .toInt
162164 } finally {
163165 os.remove.all(tmpDir)
164166 }
165-
166- version
167- .map(parseJavaVersion)
168- .getOrElse(sys.error(" Failed to detect external JDK version" ))
169- }
170-
171- private def parseJavaVersion (raw : String ) = {
172- val prop = raw.takeWhile(c => c.isDigit || c == '.' )
173-
174- val segments = prop.split(" \\ ." ).toList
175-
176- segments match {
177- // Java 17.0.1, 11.0.20.1, ..
178- case modern :: _ :: _ :: rest =>
179- modern.toInt
180- // Java 12
181- case modern :: Nil =>
182- modern.toInt
183- case other =>
184- sys.error(
185- s " Cannot process [java.version] property, unknown format: [ $raw] "
186- )
187- }
188167 }
189168
190169 private val PrintJavaVersion = """
191170 public class PrintJavaVersion {
192171 public static void main(String[] args) {
193- System.out.print(System.getProperty("java.version" ));
172+ System.out.print(Runtime.version().feature( ));
194173 }
195174 }
196-
197175 """
198176}
0 commit comments