4

我正在尝试以编程方式创建一个 JAR 文件作为我们产品的功能之一。我正在使用下面的代码来实现:

        //Assume all necessary imports and variables are declared
        FileOutputStream fOut = new FileOutputStream(jarFilePath);

        Manifest manifest = new Manifest();
        manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");

        JarOutputStream jarOut = null;
        FileInputStream reader = null;

        for(String pathToJava:pathToJavaFile) {
            jarOut = new JarOutputStream(fOut,manifest);
            reader = new FileInputStream(pathToJava);
            jarOut.putNextEntry(new ZipEntry(pathToJava));
        }

        while ((readCount = reader.read(buffer, 0, bufferSize)) >= 0) {
            if(readCount > 0) {
                jarOut.write(buffer,0,readCount);
            }
        }

这完美地工作,我能够创建 jar 文件。问题出在这一行: jarOut.putNextEntry(new ZipEntry(pathToJava));假设如果pathToJava有一个类似的值c:/foo/bar/FooBar.java,它会在 jar 文件中创建一个文件夹c: --> foo --> bar,然后将 FooBar.java 放入其中。我想要的是我应该能够把它FooBar.java放在特定的文件夹中,比如sources

无论如何我可以配置JarOutputStream将文件放在特定文件夹中吗?或者我还有其他选择吗?我可以以编程方式使用java -jar,但我退后一步,因为查找用户是否安装了 jdk 的复杂性。任何人都可以指导我吗?

4

0 回答 0