diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java index d035ee26b3f..1db5f2d0090 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.java @@ -176,7 +176,7 @@ public class K2JVMCompiler extends CLICompiler { List scriptArgs = arguments.freeArgs.subList(1, arguments.freeArgs.size()); JetCoreEnvironment environment = JetCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); - KotlinToJVMBytecodeCompiler.compileAndExecuteScript(paths, environment, scriptArgs); + KotlinToJVMBytecodeCompiler.compileAndExecuteScript(configuration, paths, environment, scriptArgs); } else { JetCoreEnvironment environment = diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java index 38fe44eb9a8..0b26e4bf802 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java @@ -222,11 +222,12 @@ public class KotlinToJVMBytecodeCompiler { } public static void compileAndExecuteScript( + @NotNull CompilerConfiguration configuration, @NotNull KotlinPaths paths, @NotNull JetCoreEnvironment environment, @NotNull List scriptArgs ) { - Class scriptClass = compileScript(paths, environment); + Class scriptClass = compileScript(configuration, paths, environment); if (scriptClass == null) return; try { @@ -241,7 +242,11 @@ public class KotlinToJVMBytecodeCompiler { } @Nullable - public static Class compileScript(@NotNull KotlinPaths paths, @NotNull JetCoreEnvironment environment) { + public static Class compileScript( + @NotNull CompilerConfiguration configuration, + @NotNull KotlinPaths paths, + @NotNull JetCoreEnvironment environment + ) { List scriptParameters = environment.getConfiguration().getList(JVMConfigurationKeys.SCRIPT_PARAMETERS); if (!scriptParameters.isEmpty()) { JetScriptDefinitionProvider.getInstance(environment.getProject()).addScriptDefinition( @@ -255,11 +260,13 @@ public class KotlinToJVMBytecodeCompiler { GeneratedClassLoader classLoader; try { + List classPaths = Lists.newArrayList(paths.getRuntimePath().toURI().toURL()); + for (File file : configuration.get(JVMConfigurationKeys.CLASSPATH_KEY, Collections.emptyList())) { + classPaths.add(file.toURI().toURL()); + } classLoader = new GeneratedClassLoader(state.getFactory(), - new URLClassLoader(new URL[] { - // TODO: add all classpath - paths.getRuntimePath().toURI().toURL() - }, AllModules.class.getClassLoader()) + new URLClassLoader(classPaths.toArray(new URL[classPaths.size()]), + AllModules.class.getClassLoader()) ); FqName nameForScript = ScriptNameUtil.classNameForScript(environment.getSourceFiles().get(0).getScript()); diff --git a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.java b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.java index 0949b830097..b3fd105aad3 100644 --- a/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.java +++ b/compiler/tests/org/jetbrains/kotlin/scripts/ScriptTest.java @@ -91,7 +91,7 @@ public class ScriptTest { try { JetScriptDefinitionProvider.getInstance(environment.getProject()).markFileAsScript(environment.getSourceFiles().get(0)); - return KotlinToJVMBytecodeCompiler.compileScript(paths, environment); + return KotlinToJVMBytecodeCompiler.compileScript(configuration, paths, environment); } catch (CompilationException e) { messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),