From 2911ff95da22d1c65b334bc821177b394bf0894b Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 3 Nov 2011 18:47:40 +0100 Subject: [PATCH] test also looks for Java under JAVA_HOME --- .../jet/compiler/CompileEnvironment.java | 28 +++++++++++++++ .../org/jetbrains/jet/cli/KotlinCompiler.java | 36 +------------------ .../jet/compiler/CompileEnvironmentTest.java | 2 +- 3 files changed, 30 insertions(+), 36 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 52fae2502a4..5945636819d 100644 --- a/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -88,6 +88,34 @@ public class CompileEnvironment { myEnvironment.addToClasspath(rtJarPath); } + public static File findRtJar(boolean failOnError) { + String javaHome = System.getenv("JAVA_HOME"); + File rtJar; + if (javaHome == null) { + rtJar = findActiveRtJar(failOnError); + + if(rtJar == null && failOnError) { + throw new CompileEnvironmentException("JAVA_HOME environment variable needs to be defined"); + } + } + else { + rtJar = findRtJar(javaHome); + } + + if ((rtJar == null || !rtJar.exists()) && failOnError) { + throw new CompileEnvironmentException("No rt.jar found under JAVA_HOME=" + javaHome); + } + return rtJar; + } + + private static File findRtJar(String javaHome) { + File rtJar = new File(javaHome, "jre/lib/rt.jar"); + if (rtJar.exists()) { + return rtJar; + } + return null; + } + public static File findActiveRtJar(boolean failOnError) { ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); if (systemClassLoader instanceof URLClassLoader) { diff --git a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java index 55861d76f8a..3de270c6583 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java @@ -5,8 +5,6 @@ import com.sampullara.cli.Argument; import org.jetbrains.jet.compiler.CompileEnvironment; import org.jetbrains.jet.compiler.CompileEnvironmentException; -import java.io.File; - /** * @author yole * @author alex.tkachman @@ -38,11 +36,8 @@ public class KotlinCompiler { CompileEnvironment environment = new CompileEnvironment(); - File rtJar = initJdk(); - if (rtJar == null) return; - try { - environment.setJavaRuntime(rtJar); + environment.setJavaRuntime(CompileEnvironment.findRtJar(true)); if (!environment.initializeKotlinRuntime()) { System.out.println("No runtime library found"); return; @@ -60,33 +55,4 @@ public class KotlinCompiler { } } - private static File initJdk() { - String javaHome = System.getenv("JAVA_HOME"); - File rtJar; - if (javaHome == null) { - rtJar = CompileEnvironment.findActiveRtJar(false); - - if(rtJar == null) { - System.out.println("JAVA_HOME environment variable needs to be defined"); - return null; - } - } - else { - rtJar = findRtJar(javaHome); - } - - if (rtJar == null || !rtJar.exists()) { - System.out.print("No rt.jar found under JAVA_HOME=" + javaHome); - return null; - } - return rtJar; - } - - private static File findRtJar(String javaHome) { - File rtJar = new File(javaHome, "jre/lib/rt.jar"); - if (rtJar.exists()) { - return rtJar; - } - return null; - } } diff --git a/compiler/tests/org/jetbrains/jet/compiler/CompileEnvironmentTest.java b/compiler/tests/org/jetbrains/jet/compiler/CompileEnvironmentTest.java index bf35a34a8fa..da76a194917 100644 --- a/compiler/tests/org/jetbrains/jet/compiler/CompileEnvironmentTest.java +++ b/compiler/tests/org/jetbrains/jet/compiler/CompileEnvironmentTest.java @@ -26,7 +26,7 @@ public class CompileEnvironmentTest extends TestCase { } public void testSmoke() { - final File activeRtJar = CompileEnvironment.findActiveRtJar(true); + final File activeRtJar = CompileEnvironment.findRtJar(true); environment.setJavaRuntime(activeRtJar); environment.initializeKotlinRuntime(); final String testDataDir = JetParsingTest.getTestDataDir() + "/compiler/smoke/";