将jar提取到指定目录

时间:2013-04-05 09:56:19

标签: java jar command

我想使用jar命令行实用程序将我的一个jar提取到指定的目录。

如果我理解这个权利-C选项应该诀窍但是当我尝试

jar xvf myJar.jar -C ./directoryToExtractTo

我从jar实用程序获取使用信息,所以我做错了。

我希望用jar实现的是什么,或者我需要手动移动我的jar并调用

jar xvf myJar.jar

8 个答案:

答案 0 :(得分:59)

jar使用zip压缩,因此您可以使用任何解压缩实用程序。

示例:

$ unzip myJar.jar -d ./directoryToExtractTo

答案 1 :(得分:51)

最好这样做。

导航到您需要的文件夹结构

使用命令

jar -xvf  'Path_to_ur_Jar_file'

答案 2 :(得分:13)

jar命令本身没有这样的选项。查看the documentation

  

-C dir在处理以下inputfiles参数时,在执行jar命令期间临时更改目录(cd dir)。   它的操作类似于UNIX的-C选项   焦油效用。例如:jar uf foo.jar -C类bar.class更改   到classes目录并将该目录中的bar.class添加到   foo.jar中。以下命令,jar uf foo.jar -C classes。 -C bin   xyz.class更改为classes目录并添加到foo.jar all   classes目录中的文件(不创建类   jar文件中的目录),然后更改回原始文件   更改为bin目录之前的目录,以添加xyz.class   foo.jar中。如果类包含文件bar1和bar2,那么这就是   jar文件包含使用jar tf foo.jar:META-INF /

     

META-INF / MANIFEST.MF

     

BAR1

     

BAR2

     

xyz.class

答案 3 :(得分:3)

如果您不想更改当前的工作目录,可能更容易在子shell中运行extract命令。

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

然后,您可以从任何工作目录执行此脚本。

[感谢David Schmitt子shell技巧]

答案 4 :(得分:1)

这对我有用。

我创建了一个文件夹,然后在命令提示符下使用CD选项更改为该文件夹。

然后从那里执行了jar。

d:\LS\afterchange>jar xvf ..\mywar.war

答案 5 :(得分:0)

这是我最终在我的.bat文件中使用的内容。当然只有Windows。

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

答案 6 :(得分:0)

截至2020年10月的当前工作版本,已更新为使用maven-antrun-plugin 3.0.0。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>prepare</id>
                    <phase>package</phase>
                    <configuration>
                        <target>
                            <unzip src="target/shaded-jar/shade-test.jar"
                                   dest="target/unpacked-shade/"/>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

答案 7 :(得分:0)

可能有点矫枉过正,但这是我想要的,所以我为它编写了一个 Bourne Shell 脚本(依赖于 sedgrep):

Usage: unjar FILE [DEST]

- DEST must not already exist (won't overwrite existing contents);
  path to DEST will be created.

- If DEST is not provided, defaults to a subdirectory in the current
  working directory that will be named after FILE without the extension.
  Ex: unjar foo.jar  # foo.jar extracted to ./foo

- If DEST is provided, the path will be created and the jar will
  be extracted into it.
  Ex: unjar foo.jar /a/b/c  # foo.jar extracted into /a/b/c

完整脚本在这里gist