Search rt.jar even if compiler was run with jre

#KT-2599 Fixed
This commit is contained in:
Nikolay Krasko
2013-02-14 14:57:55 +04:00
parent 33fa065162
commit 1aee735775
2 changed files with 26 additions and 22 deletions
@@ -67,8 +67,16 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments> {
"Using Kotlin home directory " + paths.getHomePath(), CompilerMessageLocation.NO_LOCATION);
CompilerConfiguration configuration = new CompilerConfiguration();
configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, getClasspath(paths, arguments));
configuration.addAll(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, getAnnotationsPath(paths, arguments));
try {
configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, getClasspath(paths, arguments));
configuration.addAll(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, getAnnotationsPath(paths, arguments));
}
catch (Throwable t) {
messageCollector.report(CompilerMessageSeverity.EXCEPTION, MessageRenderer.PLAIN.renderException(t),
CompilerMessageLocation.NO_LOCATION);
return INTERNAL_ERROR;
}
final List<String> argumentsSourceDirs = arguments.getSourceDirs();
if (!arguments.script &&
@@ -17,6 +17,7 @@
package org.jetbrains.jet.utils;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
@@ -138,30 +139,25 @@ public class PathUtil {
@NotNull
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;
return findRtJar(System.getProperty("java.home"));
}
private static File findRtJar(String javaHome) {
File rtJar = new File(javaHome, "jre/lib/rt.jar");
if (rtJar.exists()) {
return rtJar;
}
if (SystemInfo.isMac) {
File classesJar = new File(new File(javaHome).getParentFile(), "Classes/classes.jar");
if (classesJar.exists()) {
return classesJar;
}
File classesJar = new File(new File(javaHome).getParentFile().getAbsolutePath(), "Classes/classes.jar");
if (classesJar.exists()) {
return classesJar;
throw new IllegalArgumentException("No classes.jar found under " + classesJar.getParent());
}
else {
File rtJar = new File(javaHome, "lib/rt.jar");
if (rtJar.exists()) {
return rtJar;
}
throw new IllegalArgumentException("No rt.jar found under " + rtJar.getParent());
}
return null;
}
}