Skip to content

Commit 1f1c3e2

Browse files
committed
Catch class loader exceptions in Compiler
1 parent 260db73 commit 1f1c3e2

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

server/src/main/kotlin/org/javacs/kt/Compiler.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ private class CompilationEnvironment(
8181
addJvmClasspathRoots(classPath.map { it.toFile() })
8282

8383
// Setup script templates
84-
val scriptDefinitions: List<KotlinScriptDefinition>
84+
var scriptDefinitions: List<KotlinScriptDefinition> = listOf(StandardScriptDefinition)
8585

8686
if (classPath.any { GRADLE_DSL_DEPENDENCY_PATTERN.matches(it.fileName.toString()) }) {
8787
LOG.info("Configuring Kotlin DSL script templates...")
@@ -92,13 +92,16 @@ private class CompilationEnvironment(
9292
"org.gradle.kotlin.dsl.KotlinBuildScript"
9393
)
9494

95-
// Load template classes
96-
val scriptClassLoader = URLClassLoader(classPath.map { it.toUri().toURL() }.toTypedArray())
97-
// TODO: Use org.jetbrains.kotlin.scripting.definitions.ScriptDefinition instead of
98-
// KotlinScriptDefinition since the latter will be deprecated soon.
99-
scriptDefinitions = scriptTemplates.map { KotlinScriptDefinition(scriptClassLoader.loadClass(it).kotlin) }
100-
} else {
101-
scriptDefinitions = listOf(StandardScriptDefinition)
95+
try {
96+
// Load template classes
97+
val scriptClassLoader = URLClassLoader(classPath.map { it.toUri().toURL() }.toTypedArray())
98+
// TODO: Use org.jetbrains.kotlin.scripting.definitions.ScriptDefinition instead of
99+
// KotlinScriptDefinition since the latter will be deprecated soon.
100+
scriptDefinitions = scriptTemplates.map { KotlinScriptDefinition(scriptClassLoader.loadClass(it).kotlin) }
101+
} catch (e: Exception) {
102+
LOG.error("Error while loading script template classes")
103+
LOG.printStackTrace(e)
104+
}
102105
}
103106
addAll(ScriptingConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinitions)
104107
},

0 commit comments

Comments
 (0)