From c833ca251f413c4c0ba8b8e485be89e1dcd12494 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 4 Jul 2012 15:27:10 +0400 Subject: [PATCH] Moved CompilerDependencies.findRtJar() method to PathUtil. --- .../jetbrains/jet/cli/jvm/K2JVMCompiler.java | 4 +-- .../resolve/java/CompilerDependencies.java | 30 +------------------ .../jet/CompileCompilerDependenciesTest.java | 5 ++-- ...solveDescriptorsFromExternalLibraries.java | 7 +++-- .../src/org/jetbrains/jet/utils/PathUtil.java | 28 +++++++++++++++++ 5 files changed, 38 insertions(+), 36 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java index 061fde50f86..06fe83adc6f 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java @@ -84,7 +84,7 @@ public class K2JVMCompiler extends CLICompiler argumentsSourceDirs = arguments.getSourceDirs(); if (!arguments.script && @@ -212,7 +212,7 @@ public class K2JVMCompiler extends CLICompiler getClasspath(@NotNull K2JVMCompilerArguments arguments) { List classpath = Lists.newArrayList(); if (!arguments.noJdk) { - classpath.add(CompilerDependencies.findRtJar()); + classpath.add(PathUtil.findRtJar()); } if (!arguments.noStdlib) { classpath.add(PathUtil.getDefaultRuntimePath()); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/CompilerDependencies.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/CompilerDependencies.java index 5fa03ebcf52..3983573c828 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/CompilerDependencies.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/CompilerDependencies.java @@ -102,36 +102,8 @@ public class CompilerDependencies { public static CompilerDependencies compilerDependenciesForProduction(@NotNull CompilerSpecialMode compilerSpecialMode) { return new CompilerDependencies( compilerSpecialMode, - compilerSpecialMode.includeJdk() ? findRtJar() : null, + compilerSpecialMode.includeJdk() ? PathUtil.findRtJar() : null, compilerSpecialMode.includeJdkAnnotations() ? PathUtil.getJdkAnnotationsPath() : null, compilerSpecialMode.includeKotlinRuntime() ? PathUtil.getDefaultRuntimePath() : null); } - - public static File findRtJar() { - String javaHome = System.getProperty("java.home"); - if ("jre".equals(new File(javaHome).getName())) { - javaHome = new File(javaHome).getParent(); - } - - File rtJar = findRtJar(javaHome); - - if (rtJar == null || !rtJar.exists()) { - throw new IllegalArgumentException("No JDK rt.jar found under " + javaHome); - } - - return rtJar; - } - - private static File findRtJar(String javaHome) { - File rtJar = new File(javaHome, "jre/lib/rt.jar"); - if (rtJar.exists()) { - return rtJar; - } - - File classesJar = new File(new File(javaHome).getParentFile().getAbsolutePath(), "Classes/classes.jar"); - if (classesJar.exists()) { - return classesJar; - } - return null; - } } diff --git a/compiler/tests/org/jetbrains/jet/CompileCompilerDependenciesTest.java b/compiler/tests/org/jetbrains/jet/CompileCompilerDependenciesTest.java index 05db2da5630..ae1c031e5da 100644 --- a/compiler/tests/org/jetbrains/jet/CompileCompilerDependenciesTest.java +++ b/compiler/tests/org/jetbrains/jet/CompileCompilerDependenciesTest.java @@ -24,6 +24,7 @@ import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; +import org.jetbrains.jet.utils.PathUtil; import org.junit.Test; import java.io.File; @@ -57,7 +58,7 @@ public class CompileCompilerDependenciesTest { public static CompilerDependencies compilerDependenciesForTests(@NotNull CompilerSpecialMode compilerSpecialMode, boolean mockJdk) { return new CompilerDependencies( compilerSpecialMode, - compilerSpecialMode.includeJdk() ? (mockJdk ? JetTestUtils.findMockJdkRtJar() : CompilerDependencies.findRtJar()) : null, + compilerSpecialMode.includeJdk() ? (mockJdk ? JetTestUtils.findMockJdkRtJar() : PathUtil.findRtJar()) : null, compilerSpecialMode.includeJdkAnnotations() ? ForTestPackJdkAnnotations.jdkAnnotationsForTests() : null, compilerSpecialMode.includeKotlinRuntime() ? ForTestCompileRuntime.runtimeJarForTests() : null); } @@ -65,7 +66,7 @@ public class CompileCompilerDependenciesTest { public static CompilerConfiguration compilerConfigurationForTests(@NotNull CompilerSpecialMode compilerSpecialMode, boolean mockJdk) { List classpath = new ArrayList(); if (compilerSpecialMode.includeJdk()) { - classpath.add(mockJdk ? JetTestUtils.findMockJdkRtJar() : CompilerDependencies.findRtJar()); + classpath.add(mockJdk ? JetTestUtils.findMockJdkRtJar() : PathUtil.findRtJar()); } if (compilerSpecialMode.includeKotlinRuntime()) { classpath.add(ForTestCompileRuntime.runtimeJarForTests()); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java index 73773d4e02e..7e77680b06a 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java @@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; +import org.jetbrains.jet.utils.PathUtil; import java.io.File; import java.io.FileInputStream; @@ -115,7 +116,7 @@ public class ResolveDescriptorsFromExternalLibraries { System.out.println("Using file " + jar); } else { - jar = CompilerDependencies.findRtJar(); + jar = PathUtil.findRtJar(); System.out.println("Using rt.jar: " + jar); } @@ -154,8 +155,8 @@ public class ResolveDescriptorsFromExternalLibraries { else { CompilerDependencies compilerDependencies = CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.STDLIB, false); jetCoreEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(junk, compilerDependencies); - if (!CompilerDependencies.findRtJar().equals(jar)) { - throw new RuntimeException("rt.jar mismatch: " + jar + ", " + CompilerDependencies.findRtJar()); + if (!PathUtil.findRtJar().equals(jar)) { + throw new RuntimeException("rt.jar mismatch: " + jar + ", " + PathUtil.findRtJar()); } } diff --git a/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java b/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java index 67872ec6984..a5e0c7a2330 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java +++ b/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java @@ -119,4 +119,32 @@ public class PathUtil { throw new IllegalStateException("Path " + file + " does not exist."); } } + + public static File findRtJar() { + String javaHome = System.getProperty("java.home"); + if ("jre".equals(new File(javaHome).getName())) { + javaHome = new File(javaHome).getParent(); + } + + File rtJar = findRtJar(javaHome); + + if (rtJar == null || !rtJar.exists()) { + throw new IllegalArgumentException("No JDK rt.jar found under " + javaHome); + } + + return rtJar; + } + + private static File findRtJar(String javaHome) { + File rtJar = new File(javaHome, "jre/lib/rt.jar"); + if (rtJar.exists()) { + return rtJar; + } + + File classesJar = new File(new File(javaHome).getParentFile().getAbsolutePath(), "Classes/classes.jar"); + if (classesJar.exists()) { + return classesJar; + } + return null; + } }