From e803bcb3d9b304305ae407070ec628107b437477 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Mon, 17 Jun 2013 17:31:07 +0400 Subject: [PATCH] Fix for KT-3687 #KT-3687 Fixed --- .../jvm/compiler/CompileEnvironmentUtil.java | 78 +++++-------------- 1 file changed, 19 insertions(+), 59 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java index e8ccfee3774..da704f6a59f 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java @@ -21,7 +21,6 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.util.Function; -import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import jet.modules.AllModules; import jet.modules.Module; @@ -69,22 +68,9 @@ public class CompileEnvironmentUtil { } @Nullable - public static File getUnpackedRuntimePath() { - URL url = KotlinToJVMBytecodeCompiler.class.getClassLoader().getResource("jet/JetObject.class"); - if (url != null && url.getProtocol().equals("file")) { - return new File(url.getPath()).getParentFile().getParentFile(); - } - return null; - } - - @Nullable - public static File getRuntimeJarPath() { - URL url = KotlinToJVMBytecodeCompiler.class.getClassLoader().getResource("jet/JetObject.class"); - if (url != null && url.getProtocol().equals("jar")) { - String path = url.getPath(); - return new File(path.substring(path.indexOf(":") + 1, path.indexOf("!/"))); - } - return null; + private static File getRuntimeJarPath() { + File runtimePath = PathUtil.getKotlinPathsForCompiler().getRuntimePath(); + return runtimePath.exists() ? runtimePath : null; } @NotNull @@ -221,53 +207,27 @@ public class CompileEnvironmentUtil { } private static void writeRuntimeToJar(final JarOutputStream stream) throws IOException { - final File unpackedRuntimePath = getUnpackedRuntimePath(); - if (unpackedRuntimePath != null) { - FileUtil.processFilesRecursively(unpackedRuntimePath, new Processor() { - @Override - public boolean process(File file) { - if (file.isDirectory()) return true; - String relativePath = FileUtil.getRelativePath(unpackedRuntimePath, file); - try { - stream.putNextEntry(new JarEntry(FileUtil.toSystemIndependentName(relativePath))); - FileInputStream fis = new FileInputStream(file); - try { - FileUtil.copy(fis, stream); - } - finally { - fis.close(); - } + File runtimeJarPath = getRuntimeJarPath(); + if (runtimeJarPath != null) { + JarInputStream jis = new JarInputStream(new FileInputStream(runtimeJarPath)); + try { + while (true) { + JarEntry e = jis.getNextJarEntry(); + if (e == null) { + break; } - catch (IOException e) { - throw new RuntimeException(e); + if (FileUtilRt.extensionEquals(e.getName(), "class")) { + stream.putNextEntry(e); + FileUtil.copy(jis, stream); } - return true; } - }); + } + finally { + jis.close(); + } } else { - File runtimeJarPath = getRuntimeJarPath(); - if (runtimeJarPath != null) { - JarInputStream jis = new JarInputStream(new FileInputStream(runtimeJarPath)); - try { - while (true) { - JarEntry e = jis.getNextJarEntry(); - if (e == null) { - break; - } - if (FileUtil.getExtension(e.getName()).equals("class")) { - stream.putNextEntry(e); - FileUtil.copy(jis, stream); - } - } - } - finally { - jis.close(); - } - } - else { - throw new CompileEnvironmentException("Couldn't find runtime library"); - } + throw new CompileEnvironmentException("Couldn't find runtime library"); } }