将jar提取到指定目录


73

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

如果我了解这个正确的-C选择应该是窍门,但是当我尝试

jar xvf myJar.jar -C ./directoryToExtractTo

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

是我想要实现的东西jar还是需要手动移动我的jar并在那里调用

jar xvf myJar.jar

3
我认为-C只是为了添加文件。
Paul Grime

也许,我认为这也是为了检查输出目录。
Andna

Answers:


63

最好这样做。

导航到所需的文件夹结构

使用命令

jar -xvf  'Path_to_ur_Jar_file'

7
当然,我可以做到这一点,我同意我可以做到这一点,我只是想知道我是否误解了-C选项,而且看来确实如此。
Andna

也许这是通过“ jar xf”指定目标位置的唯一方法。
特朗普2020-正义将于

2
如果您希望像我一样在一行中进行操作:cd /my/path && jar -xvf 'Path_to_ur_Jar_file'

75

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

例:

$ unzip myJar.jar -d ./directoryToExtractTo


15
unzip myJar.jar -d out-directoryXubuntu 12.04.1
PetrÚjezdský2014年

1
过去我在使用zip创建一个jar时遇到了问题(这不等同于使用jar命令),但是我不能说解压缩。我的建议是使用此函数的风险由您自己承担,并且喜欢使用jar命令。

gunzip抱怨该罐子有多个入口
Almo

1
没有问题在rhel6上是什么...为什么Java中的所有内容都这样半生不熟??
niken's

13

jar命令本身没有此类选项。查看文档

-C dir在执行jar命令的过程中临时更改目录(cd dir),同时处理以下inputfiles参数。它的操作旨在类似于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目录,并将classes目录中的所有文件添加到foo.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


5

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

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

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

[感谢David Schmitt的subshel​​l技巧]


2

这对我有用。

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

然后从那里执行jar。

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

1

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

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

设置CURRENT_DIR =%cd%mkdir -p directoryToExtractTo cd“ directoryToExtractTo” jar xvf%CURRENT_DIR%\ myJar.jar cd%CURRENT_DIR%
Bhaskara

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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.