{"record":{"id":"4d4e8ca31e680c66","repo":"apache/flink","slug":"jar-file-does-not-exist","errorCode":null,"errorMessage":"JAR file does not exist: {}","messagePattern":"JAR file does not exist: (.+?)","errorType":"exception","errorClass":"FileNotFoundException","httpStatus":null,"severity":"critical","filePath":"flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java","lineNumber":1070,"sourceCode":"                .setEntryPointClassName(entryPointClass)\n                .setConfiguration(configuration)\n                .setSavepointRestoreSettings(runOptions.getSavepointRestoreSettings())\n                .setArguments(programArgs)\n                .build();\n    }\n\n    /**\n     * Gets the JAR file from the path.\n     *\n     * @param jarFilePath The path of JAR file\n     * @return The JAR file\n     * @throws FileNotFoundException The JAR file does not exist.\n     */\n    private File getJarFile(String jarFilePath) throws FileNotFoundException {\n        File jarFile = new File(jarFilePath);\n        // Check if JAR file exists\n        if (!jarFile.exists()) {\n            throw new FileNotFoundException(\"JAR file does not exist: \" + jarFile);\n        } else if (!jarFile.isFile()) {\n            throw new FileNotFoundException(\"JAR file is not a file: \" + jarFile);\n        }\n        return jarFile;\n    }\n\n    // --------------------------------------------------------------------------------------------\n    //  Logging and Exception Handling\n    // --------------------------------------------------------------------------------------------\n\n    /**\n     * Displays an exception message for incorrect command line arguments.\n     *\n     * @param e The exception to display.\n     * @return The return code for the process.\n     */\n    private static int handleArgException(CliArgsException e) {\n        LOG.error(\"Invalid command line arguments.\", e);","sourceCodeStart":1052,"sourceCodeEnd":1088,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java#L1052-L1088","documentation":"Thrown as ParquetDecodingException from NestedPrimitiveColumnReader.newRLEIterator when constructing the RunLengthBitPackingHybridDecoder over a column's level bytes fails with IOException — the repetition/definition level stream is unreadable (malformed RLE header, truncated bytes, or toByteArray failing). Column descriptor is included.","triggerScenarios":"Level byte arrays shorter than the bit-width run headers require; corrupt RLE/bit-packed blocks in repetition or definition levels of a nested column; inconsistent maxLevel vs. actual encoded width.","commonSituations":"Corrupt nested-column files; writers emitting level streams with wrong bit widths; partial uploads affecting level sections.","solutions":["Verify the file's level encodings with parquet-tools dump — reference readers decode the same bytes","Re-obtain the file and retry; corruption in transfer is the most common cause","If reproducible, regenerate the file with a standard writer","Report persistent cases with a reproducer to the writer project or Flink"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    nestedReader.readAndNewVector(...);\n} catch (ParquetDecodingException e) {\n    if (String.valueOf(e.getMessage()).contains(\"Could not read levels\")) {\n        quarantine(file); // level stream corrupt — deterministic\n    } else throw e;\n}","preventionTips":["Validate nested-column level encodings with parquet-tools for new producers","Detect bit-rot early with storage-level scrubbing/crc verification","Log descriptor + maxLevel alongside failures to spot writer bit-width bugs"],"tags":["parquet","nested","rle","levels","data-corruption"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}