{"record":{"id":"09ef76ffb8283eaf","repo":"eclipse-vertx/vert.x","slug":"unpack","errorCode":null,"errorMessage":"unpack","messagePattern":"unpack","errorType":"exception","errorClass":"VertxException","httpStatus":null,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java","lineNumber":261,"sourceCode":"      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;\n          URL url2 = getValidClassLoaderResource(cl, subResource);\n          unpackFromFileURL(url2, subResource, cl);\n        }\n      }\n    }\n    return cacheFile;\n  }\n\n  /**\n   * Parse the list of entries of a URL assuming the URL is a jar URL.\n   *\n   * <ul>","sourceCodeStart":243,"sourceCodeEnd":279,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java#L243-L279","documentation":"Wrap of an IOException raised while unpacking a file:// resource into the file cache (unpackFromFileURL). The message 'unpack' is the failing operation label; the concrete cause (copy failure, cache write error) is carried in the exception's cause chain.","triggerScenarios":"Thrown at vertx-core/src/main/java/io/vertx/core/file/impl/FileResolverImpl.java:261 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the cause for the real I/O failure","Verify the source file and the cache directory are readable/writable","Retry after resolving disk or permission issues"],"exampleFix":null,"handlingStrategy":"try-catch","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"}