private String constructDistJar(Path... jars) throws IOException {

        File newJar = temporaryFolder.newFile("sort-dist.jar");
        try (
                JarFile jarFile = new JarFile(SORT_DIST_JAR.toFile());
                JarOutputStream jos = new JarOutputStream(new FileOutputStream(newJar))) {
            jarFile.stream().forEach(entry -> {
                try (InputStream is = jarFile.getInputStream(entry)) {
                    jos.putNextEntry(entry);
                    jos.write(IOUtils.toByteArray(is));
                    jos.closeEntry();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            });

            for (Path jar : jars) {
                try (InputStream is = new FileInputStream(jar.toFile())) {
                    jos.putNextEntry(new JarEntry("lib/" + jar.getFileName().toString()));
                    jos.write(IOUtils.toByteArray(is));
                    jos.closeEntry();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

        }
        return newJar.getAbsolutePath();
    }
Copy all other dependencies into user jar 'lib/' entry.
Flink per-job mode only support upload one jar to cluster.
inlong-sort/sort-end-to-end-tests/sort-end-to-end-tests-v1.18/src/test/java/org/apache/inlong/sort/tests/utils/FlinkContainerTestEnv.java