in src/java/org/jetbrains/plugins/clojure/repl/ClojureConsoleRunner.java [362:419]
private GeneralCommandLine createCommandLine(Module module, String workingDir) throws CantRunException {
final JavaParameters params = new JavaParameters();
params.configureByModule(module, JavaParameters.JDK_AND_CLASSES_AND_TESTS);
params.getVMParametersList().addAll(getJvmClojureOptions(module));
params.getProgramParametersList().addAll(getReplClojureOptions(module));
// 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);
}
if (isRunNrepl(module)) {
final String jarPathForNRepl = PathUtil.getJarPathForClass(Connection.class);
params.getClassPath().add(jarPathForNRepl);
}
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)));
}
}
for (VirtualFile file : cpVFiles) {
params.getClassPath().add(file.getPath());
}
params.setMainClass(getMainReplClass(module));
params.setWorkingDirectory(new File(workingDir));
Map<String, String> envParams = new HashMap<String, String>();
envParams.putAll(System.getenv());
final GeneralCommandLine line =
CommandLineBuilder.createFromJavaParameters(params, PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext()), true).
withEnvironment(envParams);
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(line.getParametersList().getList());
// line.getParametersList().addAll();
if (!sdkConfigured) {
ClojureConfigUtil.warningDefaultClojureJar(module);
}
return line;
}