diff --git a/compiler/impl/com/intellij/compiler/CompilerMessageImpl.java b/compiler/impl/com/intellij/compiler/CompilerMessageImpl.java index 7d4c6720aef1..7b180e4eb7f7 100644 --- a/compiler/impl/com/intellij/compiler/CompilerMessageImpl.java +++ b/compiler/impl/com/intellij/compiler/CompilerMessageImpl.java @@ -57,7 +57,7 @@ public final class CompilerMessageImpl implements CompilerMessage { if (virtualFile != null && virtualFile.isValid()) { final int line = getLine() - 1; // editor lines are zero-based if (line >= 0) { - return myNavigatable = new OpenFileDescriptor(myProject, virtualFile, line, Math.max(0, getColumn())); + return myNavigatable = new OpenFileDescriptor(myProject, virtualFile, line, Math.max(0, getColumn()-1)); } } return null; diff --git a/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompiler.java b/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompiler.java index 0c8851f8a026..e820864fe07b 100644 --- a/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompiler.java +++ b/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompiler.java @@ -33,7 +33,17 @@ public class EclipseCompiler extends ExternalCompiler { private final Project myProject; private final List myTempFiles = new ArrayList(); - @NonNls public static final String PATH_TO_COMPILER_JAR = PathManager.getLibPath() + "/org.eclipse.jdt.core.jar"; + @NonNls private static final String PATH_TO_COMPILER_JAR = findJarPah(); + + private static String findJarPah() { + File dir = new File(PathManager.getLibPath()); + File[] jars = dir.listFiles(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.startsWith("org.eclipse.jdt.core") && name.endsWith(".jar"); + } + }); + return jars.length == 0 ? jars[0].getPath() : dir + "/org.eclipse.jdt.core*.jar"; + } public EclipseCompiler(Project project) { myProject = project; diff --git a/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompilerDriver.java b/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompilerDriver.java index 9cf0f15c310d..ac4e4926e5e7 100644 --- a/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompilerDriver.java +++ b/compiler/impl/com/intellij/compiler/impl/javaCompiler/eclipse/EclipseCompilerDriver.java @@ -185,11 +185,9 @@ public class EclipseCompilerDriver implements IEclipseCompilerDriver { String path = FileUtil.toSystemDependentName(outputDir) + File.separatorChar + relativePath; try { - ClassFile.writeToDisk( - true, - outputDir, - relativePath, - classFile); + File out = new File(path); + FileUtil.createParentDirs(out); + FileUtil.writeToFile(out, classFile.getBytes()); } catch (IOException e) { LOG.error(e); diff --git a/lib/org.eclipse.jdt.core_3.4.4.v_894_R34x.jar b/lib/org.eclipse.jdt.core_3.4.4.v_894_R34x.jar new file mode 100644 index 000000000000..1cd6ea2c2ba4 Binary files /dev/null and b/lib/org.eclipse.jdt.core_3.4.4.v_894_R34x.jar differ diff --git a/lib/src/org.eclipse.jdt.core.source_3.4.4.v_894_R34x.jar b/lib/src/org.eclipse.jdt.core.source_3.4.4.v_894_R34x.jar new file mode 100644 index 000000000000..39669a4ee8a8 Binary files /dev/null and b/lib/src/org.eclipse.jdt.core.source_3.4.4.v_894_R34x.jar differ