将jar文件提取到指定目录
问题:从下面的内容中提取出"从指定目录解压jar包"这个问题的出现原因以及解决方法。
原因:使用zip压缩的jar包可以使用任何解压工具进行解压,但有时会遇到以下问题:使用zip创建jar包时可能会出现问题(不等同于使用jar命令),但无法确定解压是否会出现问题。建议自担风险并优先使用jar命令。
解决方法:可以使用以下命令将jar包解压到指定目录:
$ unzip myJar.jar -d ./directoryToExtractTo
对于Xubuntu 12.04.1,可以使用以下命令:
unzip myJar.jar -d out-directory
如果在路径上找不到unzip
,而只有jar
可用,可以尝试以下方法解决该问题。
jars使用zip压缩,因此可以使用任何解压工具。例如,可以使用以下命令将jar包解压到指定目录:
$ unzip myJar.jar -d ./directoryToExtractTo
对于Xubuntu 12.04.1,可以使用以下命令:
unzip myJar.jar -d out-directory
过去我曾经在使用zip创建jar包时遇到问题(这与使用jar命令不同),但无法确定解压是否会出现问题。我的建议是自担风险并优先使用jar命令。
有用户提到在解压时遇到了gunzip报告jar包有多个条目的问题。但在rhel6上没有任何问题。为什么Java中的一切都如此不完善呢?
还有一种情况是,如果在路径上找不到unzip
命令,只有jar
命令可用,可以尝试以下解决方法。
从以上内容中可以得出,使用unzip
命令将jar包解压到指定目录时可能会遇到一些问题,例如gunzip报告多个条目的问题。但在某些情况下,只能使用jar
命令解压。
从上述内容中可以得出以下结论:
问题的原因是在jar命令本身中没有提供将jar文件解压到指定目录的选项。
解决方法是使用jar命令中的-C选项,该选项可以在执行jar命令时临时切换到指定目录,并在处理输入的文件时进行操作。它的操作类似于UNIX tar 实用程序的-C选项。
具体的使用方法如下:
1. 执行命令`jar uf foo.jar -C classes bar.class`,该命令会切换到classes目录,并将该目录下的bar.class文件添加到foo.jar中。
2. 执行命令`jar uf foo.jar -C classes . -C bin xyz.class`,该命令会切换到classes目录,并将该目录下的所有文件添加到foo.jar中(在jar文件中不会创建一个classes目录),然后切换回原始目录,再切换到bin目录并将xyz.class文件添加到foo.jar中。
使用上述方法解决了将jar文件解压到指定目录的问题。