From cb5622fc8b4fba75ee2910cb5b0d38547fbf5f7c Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 1 Oct 2019 15:13:39 +0200 Subject: [PATCH] [minor] Fix URL conversion to the file possibly fixes the exception from https://stackoverflow.com/questions/57727150/kotlin-script-engine-with-spring-boot-self-running-war --- .../script/experimental/jvmhost/test/ClassPathTest.kt | 2 +- .../src/kotlin/script/experimental/jvm/impl/pathUtil.kt | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ClassPathTest.kt b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ClassPathTest.kt index 71ddb0fa23a..fa075374a81 100644 --- a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ClassPathTest.kt +++ b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ClassPathTest.kt @@ -52,7 +52,7 @@ class ClassPathTest : TestCase() { + jar.toURI().toURL()).toTypedArray(), null ) - val cp = cl.classPathFromTypicalResourceUrls().toList() + val cp = cl.classPathFromTypicalResourceUrls().toList().map { it.canonicalFile } Assert.assertTrue(cp.contains(jar.canonicalFile)) for (el in emulatedClasspath) { diff --git a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/impl/pathUtil.kt b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/impl/pathUtil.kt index 998f3993ad2..d33988f1182 100644 --- a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/impl/pathUtil.kt +++ b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/impl/pathUtil.kt @@ -94,10 +94,14 @@ fun tryGetResourcePathForClassByName(name: String, classLoader: ClassLoader): Fi internal fun URL.toFileOrNull() = try { - File(toURI().schemeSpecificPart).canonicalFile + File(toURI()) + } catch (e: IllegalArgumentException) { + null } catch (e: java.net.URISyntaxException) { + null + } ?: run { if (protocol != "file") null - else File(file).canonicalFile + else File(file) } internal fun URL.toContainingJarOrNull(): File? =