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