以编程方式创建JAR文件 - 将文件添加到jar中的特定文件夹

时间:2013-09-16 11:46:13

标签: java jar

我正在尝试以编程方式创建一个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的复杂性。任何人都可以指导我吗?

0 个答案:

没有答案