web-dev-qa-db-ja.com

指定されたディレクトリへのjarの抽出

jarコマンドラインユーティリティを使用して、指定したディレクトリにjarの1つを抽出したかった。

私がこの正しい-Cオプションを理解すれば、このトリックはうまくいくはずですが、試してみると

jar xvf myJar.jar -C ./directoryToExtractTo

Jarユーティリティから使用情報を取得しているため、何か間違ったことをしています。

jarで実現したいものですか、手動でjarを移動してそこに呼び出す必要がありますか

jar xvf myJar.jar
65
Andna

これを行う方が良いです。

必要なフォルダー構造に移動します

コマンドを使用する

jar -xvf  'Path_to_ur_Jar_file'

jarはZip圧縮を使用するため、任意のunzipユーティリティを使用できます。

例:

$ unzip myJar.jar -d ./directoryToExtractTo

64
Amit Maniar

Jarコマンド自体には、このようなオプションはありません。 ドキュメント を調べてください:

-C dir jarコマンドの実行中に、次のinputfiles引数の処理中に一時的にディレクトリを変更します(cd dir)。その操作は、UNIX tarユーティリティの-Cオプションに似ていることを意図しています。たとえば、jar uf foo.jar -C classes bar.classをclassesディレクトリに変更し、そのディレクトリからbar.classをfoo.jarに追加します。次のコマンドjar uf foo.jar -C classes -C bin xyz.classはclassesディレクトリに変更し、classsディレクトリ内のすべてのファイルをjar.jarに追加します(jarファイルにclassesディレクトリを作成せずに)。その後、追加するbinディレクトリに変更する前に元のディレクトリに戻ります。 xyz.classからfoo.jar。クラスがファイルbar1とbar2を保持している場合、jar tf foo.jarを使用してjarファイルに含まれるものは次のとおりです。META-INF /

META-INF/MANIFEST.MF

bar1

bar2

xyz.class

13
glory1

現在の作業ディレクトリを変更したくない場合は、このようなサブシェルでextractコマンドを実行する方が簡単かもしれません。

mkdir -p "/path/to/target-dir"
(cd "/path/to/target-dir" && exec jar -xf "/path/to/your/war-file.war")

その後、任意の作業ディレクトリからこのスクリプトを実行できます。

[ David Schmitt に感謝します]

3
Montri M

これは私のために働いた。

フォルダーを作成し、コマンドプロンプトからCDオプションを使用してフォルダーに変更しました。

次に、そこからjarを実行しました。

d:\LS\afterchange>jar xvf ..\mywar.war
1
Ashok Ogirala

これが、私が.batファイル内で使用することになったものです。もちろんWindowsのみ。

set CURRENT_DIR=%cd%
mkdir ./directoryToExtractTo
cd ./directoryToExtractTo
jar xvf %CURRENT_DIR%\myJar.jar
cd %CURRENT_DIR%
0