{"record":{"id":"e052e3e5b1dcd9eb","repo":"apache/flink","slug":"could-not-get-job-jar-and-dependencies-from-jar-fi","errorCode":null,"errorMessage":"Could not get job jar and dependencies from JAR file: {}","messagePattern":"Could not get job jar and dependencies from JAR file: (.+?)","errorType":"exception","errorClass":"CliArgsException","httpStatus":null,"severity":"error","filePath":"flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java","lineNumber":259,"sourceCode":"                                        new IllegalArgumentException(\n                                                String.format(\n                                                        \"Config '%s' has to be set.\",\n                                                        DeploymentOptions.TARGET.key())));\n\n        return executionTarget.trim().endsWith(\"application\");\n    }\n\n    /** Get all provided libraries needed to run the program from the ProgramOptions. */\n    private List<URL> getJobJarAndDependencies(ProgramOptions programOptions)\n            throws CliArgsException {\n        String entryPointClass = programOptions.getEntryPointClassName();\n        String jarFilePath = programOptions.getJarFilePath();\n\n        try {\n            File jarFile = jarFilePath != null ? getJarFile(jarFilePath) : null;\n            return PackagedProgram.getJobJarAndDependencies(jarFile, entryPointClass);\n        } catch (FileNotFoundException | ProgramInvocationException e) {\n            throw new CliArgsException(\n                    \"Could not get job jar and dependencies from JAR file: \" + e.getMessage(), e);\n        }\n    }\n\n    private PackagedProgram getPackagedProgram(\n            ProgramOptions programOptions, Configuration effectiveConfiguration)\n            throws ProgramInvocationException, CliArgsException {\n        PackagedProgram program;\n        try {\n            LOG.info(\"Building program from JAR file\");\n            program = buildProgram(programOptions, effectiveConfiguration);\n        } catch (FileNotFoundException e) {\n            throw new CliArgsException(\n                    \"Could not build the program from JAR file: \" + e.getMessage(), e);\n        }\n        return program;\n    }\n","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/apache/flink/blob/2f3c205e9266cb30240eb7f4fdab15cad629a70f/flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java#L241-L277","documentation":"Thrown from AbstractColumnReader.prepareNewPage when a page is dictionary-encoded but the concrete encoding is neither PLAIN_DICTIONARY nor RLE_DICTIONARY. Flink's vectorized reader only implements these two dictionary encodings for page data. Any other encoding claiming to use a dictionary (now or in the future) is rejected.","triggerScenarios":"A Parquet file written with a new/experimental dictionary encoding not in {PLAIN_DICTIONARY, RLE_DICTIONARY}; enum Encoding.usesDictionary() returning true for an encoding Flink's vectorized path never anticipated.","commonSituations":"Reading files from newer writers that adopted encodings Flink's vendored Parquet version does not know; files produced by research/experimental Parquet implementations; after upgrading a writer stack that switched encodings by default.","solutions":["Identify the encoding: the message includes it (e.g. 'Unsupported encoding: DELTA_BYTE_SPLIT')","Rewrite the file with a writer using standard encodings (parquet-mr defaults) — e.g. in Spark set spark.sql.parquet.compression.codec and disable experimental encoding options","Upgrade Flink to a release whose parquet-mr supports the encoding","Fall back to a non-vectorized Parquet reading path (e.g. Hive/MapReduce-based InputFormat) that delegates to parquet-mr's full ValuesReader set"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Pre-check encodings against the supported set before vectorized read\nSet<Encoding> supported = Set.of(Encoding.PLAIN, Encoding.PLAIN_DICTIONARY, Encoding.RLE_DICTIONARY);\ntry (ParquetFileReader r = ParquetFileReader.open(conf, path)) {\n    for (BlockMetaData b : r.getFooter().getBlocks()) {\n        for (ColumnChunkMetaData c : b.getColumns()) {\n            for (Encoding enc : c.getEncodings()) {\n                if (!supported.contains(enc)) throw new UnsupportedEncodingException(enc.name());\n            }\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    reader.readToVector(...);\n} catch (IOException | UnsupportedOperationException e) {\n    if (String.valueOf(e.getMessage()).startsWith(\"Unsupported encoding\")) {\n        // route file to a converter or reject with a clear producer-facing message\n    } else throw e;\n}","preventionTips":["Standardize writer settings: disable experimental encodings for files consumed by Flink","Gate new writer versions in your data platform with a Flink read-compatibility test","Fail fast at metadata time (encoding list is in the footer) rather than mid-query"],"tags":["parquet","encoding","unsupported-feature"],"backgroundTag":null,"analyzedSha":"2f3c205e9266cb30240eb7f4fdab15cad629a70f","analyzedAt":"2026-08-14T08:48:24.518Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}