{"record":{"id":"6dae6395112b021a","repo":"eclipse-vertx/vert.x","slug":"invalid-url-protocol","errorCode":null,"errorMessage":"Invalid url protocol: ","messagePattern":"Invalid url protocol: ","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java","lineNumber":249,"sourceCode":"    return resource;\n  }\n\n  private File unpackUrlResource(URL url, String fileName, ClassLoader cl, boolean isDir) {\n    String prot = url.getProtocol();\n    switch (prot) {\n      case \"file\":\n        return unpackFromFileURL(url, fileName, cl);\n      case \"jar\":\n        return unpackFromJarURL(url, fileName, cl);\n      case \"bundle\": // Apache Felix, Knopflerfish\n      case \"bundleentry\": // Equinox\n      case \"bundleresource\": // Equinox\n      case \"jrt\": // java run-time (JEP 220)\n      case \"resource\":  // substratevm (graal native image)\n      case \"vfs\":  // jboss-vfs\n        return unpackFromBundleURL(url, fileName, isDir);\n      default:\n        throw new IllegalStateException(\"Invalid url protocol: \" + prot);\n    }\n  }\n\n\n  private File unpackFromFileURL(URL url, String fileName, ClassLoader cl) {\n    final File resource = new File(decodeURIComponent(url.getPath(), false));\n    boolean isDirectory = resource.isDirectory();\n    File cacheFile;\n    try {\n      cacheFile = cache.cacheFile(fileName, resource, !enableCaching);\n    } catch (IOException e) {\n      throw new VertxException(FileSystemImpl.getFileAccessErrorMessage(\"unpack\", resource.getAbsolutePath()), e);\n    }\n    if (isDirectory) {\n      String[] listing = resource.list();\n      if (listing != null) {\n        for (String file : listing) {\n          String subResource = fileName + \"/\" + file;","sourceCodeStart":231,"sourceCodeEnd":267,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java#L231-L267","documentation":"Protocol dispatch guard in FileResolverImpl.unpackUrlResource: the URL's protocol matched none of the supported schemes (file, jar, bundle*, jrt, resource, vfs). The unsupported protocol name is appended to the message; the resource cannot be unpacked to the cache from that URL type.","triggerScenarios":"Thrown at vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java:249 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a resource URL with a supported protocol (file:, jar:, bundle:, jrt:, resource:, vfs:)","Serve the resource from the classpath in a standard container instead of an exotic protocol"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}