diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 954774d4960..3bd7ed243b0 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -6,19 +6,13 @@
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
@@ -99,10 +93,10 @@
-
+
-
+
@@ -177,10 +171,10 @@
-
+
-
+
@@ -253,7 +247,7 @@
-
+
@@ -297,11 +291,11 @@
-
+
@@ -767,9 +761,9 @@
-
+
-
+
@@ -807,7 +801,7 @@
-
+
@@ -822,6 +816,7 @@
+
@@ -856,7 +851,7 @@
-
+
@@ -868,13 +863,6 @@
-
-
-
-
-
-
-
@@ -948,7 +936,14 @@
-
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/K2JSTranslator.java b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
index 74a653e26f5..c3c9b4db882 100644
--- a/translator/src/org/jetbrains/k2js/K2JSTranslator.java
+++ b/translator/src/org/jetbrains/k2js/K2JSTranslator.java
@@ -28,6 +28,8 @@ import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports;
import java.io.File;
import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.Collection;
import java.util.List;
@@ -165,11 +167,49 @@ public class K2JSTranslator {
}
private static File initJdk() {
- // TODO detect jar
- File rtJar = new File("C:\\Program Files\\Java\\jdk1.6.0_29\\jre\\lib\\rt.jar");
- assert rtJar != null;
+ String javaHome = System.getenv("JAVA_HOME");
+ File rtJar = null;
+ if (javaHome == null) {
+ ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
+ if(systemClassLoader instanceof URLClassLoader) {
+ URLClassLoader loader = (URLClassLoader) systemClassLoader;
+ for(URL url: loader.getURLs()) {
+ if("file".equals(url.getProtocol())) {
+ if(url.getFile().endsWith("/lib/rt.jar")) {
+ rtJar = new File(url.getFile());
+ break;
+ }
+ if(url.getFile().endsWith("/Classes/classes.jar")) {
+ rtJar = new File(url.getFile()).getAbsoluteFile();
+ break;
+ }
+ }
+ }
+ }
+
+ 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;
+ }
+
}