我有一个网络程序,我希望用户能够导入.war
文件,我可以从.war
文件中提取某些文件。我找到了两个类库:java.util.zip.*
和java.util.jar.*
。根据我的理解,WAR文件是一个特殊的JAR文件,它是一个特殊的ZIP文件。那么使用java.util.jar
会更好吗?如果ZIP和JAR文件几乎相同,为什么需要两个不同的库?
答案 0 :(得分:104)
WAR文件只是一个JAR文件,要提取它,只需发出以下jar命令 -
jar -xvf yourWARfileName.war
如果找不到jar命令,有时会在Windows命令提示符中找到,那么请指定完整路径,即在我的情况下是,
c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
答案 1 :(得分:21)
如果查看JarFile API,您会看到它是ZipFile类的子类。
特定于jar的类主要只是添加特定于jar的功能,例如直接支持清单文件属性等等。
这是OOP“行动”;由于jar文件是zip文件,因此jar类可以使用zip功能并提供额外的实用程序。
答案 2 :(得分:11)
只需将.war
重命名为.jar
,然后使用Winrar
(或任何其他存档管理器)将其解压缩。
答案 3 :(得分:1)
如果使用Linux或Ubuntu,则可以直接从.war
文件中提取数据。
war
文件只是一个jar
文件,要提取它,只需使用jar
程序发出以下命令:
jar -xvf yourWARfileName.war
答案 4 :(得分:0)
就像你说的那样,jar 是一个zip文件(不是一种特殊的类型,而只是一个普通的旧zip),所以任何一个库都可以使用。原因是普通人看到* .zip扩展名,往往会解压缩它。由于应用服务器希望它解压缩,因此简单的重命名可以防止人们仅仅因为习惯而解压缩它。同样,* .war文件也应保持未压缩状态。
java.util.jar基本上只是为java.util.zip添加了额外的功能而且只需要很少的额外开销。让java.util.jar成为发布等的帮助者......并使用它。
答案 5 :(得分:0)
Jar类/包用于特定的Jar文件机制,在某些情况下,Jar文件使用了一个清单。
Zip文件类/包处理包含Jar文件的压缩文件,这是一种压缩文件。
Jar类因此扩展了Zip包类。
答案 6 :(得分:0)
您可以使用周转方法,只需将应用程序部署到tomcat服务器中即可:只需在webapps文件夹下复制/粘贴即可。 一旦tomcat启动,它将创建一个具有应用名称的文件夹,您可以直接访问内容
答案 7 :(得分:0)
对于Mac用户:在终端命令中:
unzip yourWARfileName.war