quarkusio/quarkus · error · IllegalStateException

Error unzipping import file

Error message

Error unzipping import file %s: %s

What it means

SchemaToolingUtil.unzipZipFilesAndReplaceZips processes SQL import files referenced by Hibernate schema generation/data loading. When a referenced import file is a ZIP archive and extracting it fails (bad zip, IO error), this IllegalStateException wraps the underlying message with the offending file name.

Solutions

  1. Open the referenced zip manually and verify it extracts correctly (unzip -t file.zip); regenerate it if corrupt.
  2. Point the import-file config at the plain .sql file(s) instead of a zip.
  3. Check file permissions and that the path resolves at runtime (inside the jar/container).
  4. If it's not a zip, remove the extension so the file is treated as a normal import script.

Example fix

// before
quarkus.hibernate-orm.database.generation.create-sourcename=scripts/import.zip
// after
quarkus.hibernate-orm.database.generation.create-sourcename=sql/import.sql
Defensive patterns

Strategy: validation

Validate before calling

// Validate the import zip before configuring schema generation
Path zip = Path.of("scripts/import.zip");
if (!Files.isRegularFile(zip) || Files.size(zip) == 0) throw new IllegalStateException("bad zip");
try (ZipFile zf = new ZipFile(zip.toFile())) {
    if (!zf.entries().hasMoreElements()) throw new IllegalStateException("empty zip");
}

Prevention

When it happens

Trigger: quarkus.hibernate-orm.database.generation.create-sourcename (or .load-sourcename) points to a .zip that is corrupt, empty, password-protected, or unreadable; filesystem permission errors on the unzip target directory; the file was renamed but is not actually a zip.

Common situations: CI pipelines mounting truncated artifacts; devs committing placeholder .zip files; Docker images missing the referenced resource; Windows/Unix path mismatches making the archive unreadable.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/5c066c18ddd73f11. Report an issue: GitHub.

Appendix: source

Thrown at extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/SchemaToolingUtil.java:51

                String[] fileNames = commaSeparatedFileNames.split(",");
                for (String fileName : fileNames) {
                    if (fileName.endsWith(".zip")) {
                        try {
                            Path unzipDir = Files.createTempDirectory(SQL_LOAD_SCRIPT_UNZIPPED_DIR_PREFIX);
                            unzipDirs.add(unzipDir);

                            URL resource = Thread.currentThread()
                                    .getContextClassLoader()
                                    .getResource(fileName);
                            Path zipFile = Paths.get(resource.toURI());
                            ZipUtils.unzip(zipFile, unzipDir);
                            try (DirectoryStream<Path> paths = Files.newDirectoryStream(unzipDir)) {
                                for (Path path : paths) {
                                    unzippedFilesNames.add(path.toAbsolutePath().toString());
                                }
                            }
                        } catch (Exception e) {
                            throw new IllegalStateException(String.format(Locale.ROOT, "Error unzipping import file %s: %s",
                                    fileName, e.getMessage()), e);
                        }
                    } else {
                        unzippedFilesNames.add(fileName);
                    }
                }
                return new PreparedImportScripts(String.join(",", unzippedFilesNames), unzipDirs);
            } else {
                return new PreparedImportScripts(null, Collections.emptyList());
            }
        } catch (RuntimeException e) {
            failure = e;
            throw e;
        } finally {
            if (failure != null) {
                for (Path unzipDir : unzipDirs) {
                    recursiveDeleteQuietly(unzipDir);
                }

View on GitHub (pinned to e1c734241f)