in src/java/org/jetbrains/plugins/clojure/repl/ClojureConsoleRunner.java [294:344]
private static ArrayList<String> createRuntimeArgs(Module module, String workingDir) throws CantRunException {
final JavaParameters params = new JavaParameters();
params.configureByModule(module, JavaParameters.JDK_AND_CLASSES_AND_TESTS);
// To avoid NCDFE while starting REPL
final boolean sdkConfigured = ClojureConfigUtil.isClojureConfigured(module);
if (!sdkConfigured) {
final String jarPath = ClojureConfigUtil.CLOJURE_SDK;
assert jarPath != null;
params.getClassPath().add(jarPath);
}
Set<VirtualFile> cpVFiles = new HashSet<VirtualFile>();
ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module);
OrderEntry[] entries = moduleRootManager.getOrderEntries();
for (OrderEntry orderEntry : entries) {
// Add module sources to classpath
if (orderEntry instanceof ModuleSourceOrderEntry) {
cpVFiles.addAll(Arrays.asList(orderEntry.getFiles(OrderRootType.SOURCES)));
}
}
// Also add output folders
final VirtualFile outputDirectory = CompilerPaths.getModuleOutputDirectory(module, false);
if (outputDirectory != null) {
cpVFiles.add(outputDirectory);
}
for (VirtualFile file : cpVFiles) {
params.getClassPath().add(file.getPath());
}
params.setMainClass(getMainReplClass(module));
params.setWorkingDirectory(new File(workingDir));
final GeneralCommandLine line = CommandLineBuilder.createFromJavaParameters(params, PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext()), true);
final Sdk sdk = params.getJdk();
assert sdk != null;
final SdkType type = (SdkType) sdk.getSdkType();
final String executablePath = ((JavaSdkType) type).getVMExecutablePath(sdk);
final ArrayList<String> cmd = new ArrayList<String>();
cmd.add(executablePath);
cmd.addAll(getJvmClojureOptions(module));
cmd.addAll(line.getParametersList().getList());
cmd.addAll(getReplClojureOptions(module));
if (!sdkConfigured) {
ClojureConfigUtil.warningDefaultClojureJar(module);
}
return cmd;
}