diff --git a/quarkus/deployment/src/main/java/org/keycloak/quarkus/deployment/KeycloakProcessor.java b/quarkus/deployment/src/main/java/org/keycloak/quarkus/deployment/KeycloakProcessor.java index 54279230315..7606170aa95 100644 --- a/quarkus/deployment/src/main/java/org/keycloak/quarkus/deployment/KeycloakProcessor.java +++ b/quarkus/deployment/src/main/java/org/keycloak/quarkus/deployment/KeycloakProcessor.java @@ -1038,7 +1038,7 @@ class KeycloakProcessor { } } } - } catch (IOException e) { + } catch (IOException | URISyntaxException e) { throw new RuntimeException("Failed to discover script providers", e); } } @@ -1078,8 +1078,8 @@ class KeycloakProcessor { return descriptors; } - private List getScriptProviderDescriptorsFromJarFile(URL url) throws IOException { - String file = url.getFile(); + private List getScriptProviderDescriptorsFromJarFile(URL url) throws IOException, URISyntaxException { + String file = url.toURI().getSchemeSpecificPart(); if (!file.contains(JAR_FILE_SEPARATOR)) { return List.of(); @@ -1090,6 +1090,10 @@ class KeycloakProcessor { try (JarFile jarFile = new JarFile(file.substring("file:".length(), file.indexOf(JAR_FILE_SEPARATOR)))) { JarEntry descriptorEntry = jarFile.getJarEntry(KEYCLOAK_SCRIPTS_JSON_PATH); + if (descriptorEntry == null) { + return descriptors; + } + try (InputStream is = jarFile.getInputStream(descriptorEntry)) { ScriptProviderDescriptor descriptor = JsonSerialization.readValue(is, ScriptProviderDescriptor.class);