diff --git a/j2k.ipr b/j2k.ipr
index f175e7ecb1a..85640093dc3 100644
--- a/j2k.ipr
+++ b/j2k.ipr
@@ -3,6 +3,17 @@
+
+
+ $PROJECT_DIR$/out/artifacts/j2k_jar
+
+
+
+
+
+
+
+
diff --git a/jre/lib/annotations.jar b/jre/lib/annotations.jar
index 5de67805f7b..e69de29bb2d 100644
Binary files a/jre/lib/annotations.jar and b/jre/lib/annotations.jar differ
diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..558fbaba78d
--- /dev/null
+++ b/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: org.jetbrains.jet.j2k.JavaToKotlinTranslator
+
diff --git a/src/org/jetbrains/jet/j2k/JavaToKotlinTranslator.java b/src/org/jetbrains/jet/j2k/JavaToKotlinTranslator.java
index 7a7b224f62c..0522750afe0 100644
--- a/src/org/jetbrains/jet/j2k/JavaToKotlinTranslator.java
+++ b/src/org/jetbrains/jet/j2k/JavaToKotlinTranslator.java
@@ -50,8 +50,10 @@ public class JavaToKotlinTranslator {
});
javaCoreEnvironment.addToClasspath(findRtJar(true));
- javaCoreEnvironment.addToClasspath(new File("jre/lib/annotations.jar"));
-
+ File annotations = findAnnotations();
+ if (annotations != null && annotations.exists()) {
+ javaCoreEnvironment.addToClasspath(annotations);
+ }
return PsiFileFactory.getInstance(javaCoreEnvironment.getProject()).createFileFromText(
name, JavaLanguage.INSTANCE, text
);
@@ -108,6 +110,18 @@ public class JavaToKotlinTranslator {
return null;
}
+ @Nullable
+ private static File findAnnotations() {
+ ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
+ if (systemClassLoader instanceof URLClassLoader) {
+ URLClassLoader loader = (URLClassLoader) systemClassLoader;
+ for (URL url : loader.getURLs())
+ if ("file".equals(url.getProtocol()) && url.getFile().endsWith("/annotations.jar"))
+ return new File(url.getFile());
+ }
+ return null;
+ }
+
public static File findActiveRtJar(boolean failOnError) {
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
if (systemClassLoader instanceof URLClassLoader) {