in src/main/kotlin/com/compiler/server/compiler/components/KotlinCompiler.kt [69:95]
fun run(
files: List<ProjectFile>,
addByteCode: Boolean,
args: String,
userCompilerArguments: Map<String, Any>
): JvmExecutionResult {
return execute(files, addByteCode, userCompilerArguments) { output, compiled ->
val mainClass = JavaRunnerExecutor::class.java.name
val compiledMainClass = when (compiled.mainClasses.size) {
0 -> return@execute JvmExecutionResult(
exception = IllegalArgumentException("No main method found in project").toExceptionDescriptor()
)
1 -> compiled.mainClasses.single()
else -> return@execute JvmExecutionResult(
exception = IllegalArgumentException(
"Multiple classes in project contain main methods found: ${
compiled.mainClasses.sorted().joinToString()
}"
).toExceptionDescriptor()
)
}
val arguments = listOfNotNull(compiledMainClass) + args.split(" ")
javaExecutor.execute(argsFrom(mainClass, output, arguments))
.asExecutionResult()
}
}