Skip to content

Commit 9311c26

Browse files
authored
Let engine process utContext use Platform ClassLoader #2479 (#2512)
1 parent 2933474 commit 9311c26

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/process/EngineProcessMain.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,13 @@ private var idCounter: Long = 0
7474
private fun EngineProcessModel.setup(kryoHelper: KryoHelper, watchdog: IdleWatchdog, realProtocol: IProtocol) {
7575
val model = this
7676
watchdog.measureTimeForActiveCall(setupUtContext, "UtContext setup") { params ->
77-
// we use parent classloader with null to disable autoload classes from system classloader
77+
// - We use `ClassLoader.getSystemClassLoader().parent` as parent to let
78+
// classes like `javax.sql.DataSource` load from URLs like `jrt:/java.sql`.
79+
// - We do not use `ClassLoader.getSystemClassLoader()` itself to avoid utbot dependencies like Jackson
80+
// being used instead of user's dependencies, which is important, since they may have different versions.
7881
UtContext.setUtContext(UtContext(URLClassLoader(params.classpathForUrlsClassloader.map {
7982
File(it).toURI().toURL()
80-
}.toTypedArray(), null)))
83+
}.toTypedArray(), ClassLoader.getSystemClassLoader().parent)))
8184
}
8285
watchdog.measureTimeForActiveCall(getSpringBeanDefinitions, "Getting Spring bean definitions") { params ->
8386
try {

0 commit comments

Comments
 (0)