web-dev-qa-db-ja.com

javaで.warファイルを抽出する方法は? ZipとJAR

ユーザーが.warファイルをインポートできるようにするWebプログラムがあり、.warファイルから特定のファイルを抽出できます。 Java.util.Zip.*Java.util.jar.*の2つのクラスライブラリを見つけました。私の理解では、WARファイルは特別なZipファイルである特別なJARファイルです。 Java.util.jarを使用する方が良いでしょうか? ZipファイルとJARファイルがほぼ同じ場合、2つの異なるライブラリが必要なのはなぜですか?

42
user972276

JarFile APIを見ると、 ZipFile クラスのサブクラスであることがわかります。

ほとんどの場合、jar固有のクラスは、マニフェストファイル属性の直接サポートなど、jar固有の機能を追加するだけです。

それはOOP "in action"です; jarファイルはZipファイルであるため、jarクラスはZip機能を使用して追加のユーティリティを提供できます。

21
Dave Newton

WARファイルは単なるJARファイルです。抽出するには、次のjarコマンドを発行します–

jar -xvf yourWARfileName.war

Jarコマンドが見つからない場合(Windowsコマンドプロンプトで時々発生する)、フルパスを指定します。つまり、私の場合は、

 c:\Java\jdk-1.7.0\bin\jar -xvf my-file.war
107
iltaf khalid

.warの名前を.jarに変更し、Winrar(または他のアーカイブマネージャー)を使用して解凍します。

11
Mehdi

LinuxまたはUbuntuを使用している場合は、.warファイルから直接データを抽出できます。

warファイルは、単にjarファイルです。これを抽出するには、jarプログラムを使用して次のコマンドを発行します。

jar -xvf yourWARfileName.war
2
Karan Rajput

あなたが言ったように、jar is Zipファイル(特別なタイプではなく、単なる古いZip)であるため、どちらのライブラリも機能させることができます。理由は、*。Zip拡張子を見る平均的な人はそれを解凍する傾向があるということです。アプリサーバーはそれを解凍することを望んでいるので、簡単な名前変更は人々が単に習慣からそれを解凍することを防ぎます。同様に、*。warファイルも非圧縮のままにしておく必要があります。

Java.util.jarは基本的に、Java.util.Zipに追加の機能を追加するだけで、余分なオーバーヘッドはほとんどありません。 Java.util.jarを投稿などのヘルパーにして、使用します。

0
Affable Geek

Jarクラス/パッケージは、場合によってはJarファイルによって使用されるマニフェストがある特定のJarファイルメカニズム用です。

Zipファイルクラス/パッケージは、圧縮ファイルの一種であるJarファイルを含む圧縮ファイルを処理します。

したがって、JarクラスはZipパッケージクラスを拡張します。

0
r0ast3d

ターンアラウンドを使用して、アプリケーションをTomcatサーバーにデプロイするだけです。webappsフォルダーの下にコピー/貼り付けするだけです。 Tomcatが開始されると、アプリ名でフォルダーが作成され、コンテンツに直接アクセスできます

0
M. Dhaouadi