2016-02-12 46 views
0

我无法强制jar将目录内容(递归)复制到.jar文件。这听起来有点尴尬,因为它听起来像是一件基本的事情,但至少我现在还有一个关于为什么我不喜欢Java的论点。将所有目录内容添加到罐子

我在我的项目文件夹中有一个bin目录。该目录包含了在不同的文件夹.class文件:

image description

我希望创建一个有根的文件和目录的JAR文件。结构应保持不变。我可以7z七个zip命令做到这一点:

cd bin 
7za a -r sample3.jar *.* 

但Java不喜欢你的一点。我真的很惊讶,诸如添加所有目录内容的功能如此隐藏。

这是我的尝试:

  • jar cf sample3.jar bin/*jar cf sample3.jar bin创建包含在根bin目录罐子,而不是包含目录
  • 这将创建JAR文件,该文件只包含META-INF

    cd bin 
    jar cf sample3.jar *.* 
    
  • 同样的问题:

    cd bin 
    jar cf sample3.jar *.class 
    

有一个简单的方法来添加的所有目录内容JAR?这就是我想要的:

image description

+1

第一提示:'*。*','bin/*'等包含元字符。你怎么解释他们? – fge

+0

尝试'罐子CF sample3.jar * .class' –

+0

@fge'jar'应该理解他们,像7Z一样。如果没有,那么也许这个问题是关于如何让他们解释,不是吗? –

回答

1

试试这个,如果你是从bin目录中运行

jar -cfv samples.jar . *.class

Ç - 创建一个名为jar文件(如果指定的F是新的存档文件)或标准输出(如果f和jar文件被省略)

f - 指定要创建的文件jarfile(c),更新的(u),提取的(x ),索引(i)或查看(t)。 -f选项和文件名jarfile是一对 - 如果存在,它们必须同时出现。

v-生成详细输出到标准输出。输入文件(./*.class) - 由空格分隔的文件或目录,要组合成jarfile(用于c和u),或从jarfile中提取(用于x)或列出(用于t)。所有目录都是递归处理的。

+0

感谢您的回答,这做了我所需要的。你能解释为什么使用'.'和'* .class'吗? –

1

用'bin /。'尝试-C选项。它会“改变到指定的目录并包含下面的文件”

jar -cvf sample3.jar -C bin/ . 
相关问题