2015-06-25 48 views
0

清单文件,我可以创建目录指定IE/MYDIR的战争文件,如何添加在战争

Process p = Runtime.getRuntime().exec("jar -cvf myapp.war . ", 
         s, 
         new File("/mydir")); 

,但是当我尝试添加清单文件,同时创建,创建war文件currupted

Process p = Runtime.getRuntime().exec("jar -cvfm myapp.war MANIFEST.MF . ", 
         s, 
         new File("/mydir")); 

即使我尝试这样做,它创建战争,但只包含清单文件和不是内容/ MYDIR

Process p = Runtime.getRuntime().exec("jar -cvfm myapp.war MANIFEST.MF * ", 
         s, 
         new File("/mydir")); 
+0

有你用'jar'而不是'war'来试试这个?用'manifest.mf'文件创建'jar'文件吗?我想你应该为此尝试。当你调用'jar -cvfm ...'命令时'jar'命令会自动添加'manifest.mf'文件。可能是当定制'MANIFEST.MF'要添加到创建的'jar'时,那么它会限制覆盖以前创建的jar。或者你可以先创建'.war',然后更新它以添加'manifest.mf'文件。尝试一下。 – OO7

+0

是否有任何具体原因以编程方式创建'manifest.mf'文件?然后**为什么你不去[java.util.jar.Manifest](http://docs.oracle.com/javase/7/docs/api/java/util/jar/Manifest.html)** ?这个类可以让你创建自定义的'manifest'文件。您可以**使用[java.util.jar.Attributes.Name](http://docs.oracle.com/javase/7/docs/api/java/util/)指定您想要在生成的文件中使用的属性罐/ Attributes.Name.html)。** – OO7

回答

0

我用下面的代码片段和其做工精细

jar -cvfM myapp.war MANIFEST.MF * ", 
         s, 
         new File("/mydir")); 

这意味着它不会增加清单自动生成的一个,而不是它归档的一个(定制清单文件),我一直保持着META-INF文件夹