55

我有一个文件夹结构

/com/cdy/ws/a.class files
/com/cdy/ws/b.class files
/com/cdy/ws/c.class files

当我运行以下命令“jar cvf asd.jar *.class”时,它会提供包含所有类文件的 jar。但是没有生成文件夹结构。所有类文件都必须在“com.cdy/ws”下,但所有类都在 META-INF 的同一级别。谁能告诉我生成包结构的命令是什么?

谢谢

4

10 回答 10

108

您需要开始在文件的根目录创建 JAR 。

因此,例如:

jar cvf program.jar -C path/to/classes .

假设path/to/classes包含com目录。

仅供参考,现在大多数人直接使用命令相对不常见jar,因为他们将使用诸如AntMaven之类的构建工具来处理它(以及构建的其他方面)。让这些工具之一来处理构建的所有方面是非常值得的,而且使用好的 IDE 来帮助编写build.xml(Ant) 或pom.xml(Maven) 会更容易。

于 2013-08-09T12:16:09.837 回答
17

你要

$ jar cvf asd.jar .

指定要从的目录(例如.jar。这将在 jar 文件中维护您的文件夹结构。

于 2013-08-09T12:14:29.493 回答
13

从包含com文件夹的目录:

$ jar cvf asd.jar com
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/a.class(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/b.class(in = 0) (out= 0)(stored 0%)
adding: com/cdy/ws/c.class(in = 0) (out= 0)(stored 0%)

$ jar -tf asd.jar 
META-INF/
META-INF/MANIFEST.MF
com/
com/cdy/
com/cdy/ws/
com/cdy/ws/a.class
com/cdy/ws/b.class
com/cdy/ws/c.class
于 2013-08-09T12:15:11.543 回答
7

第 1 步:使用命令提示符(或 Linux shell 提示符)转到保存类的目录,例如
Project。
C:/workspace/MyProj/bin/classess/com/test/*.class

使用命令转到目录 bin:

cd C:/workspace/MyProj/bin

步骤 2:使用以下命令生成 jar 文件。

jar cvf helloworld.jar com\test\hello\Hello.class  com\test\orld\HelloWorld.class

使用上述命令,类将被放置在目录结构中的 jar 中。

于 2014-07-03T18:21:06.267 回答
3

您指定的文件夹名称必须C:\Program Files\Java\jdk1.7.0_02\bin位于具有类文件的路径文件夹名称上。

C:\Program Files\Java\jdk1.7.0_02\bin>jar cvf program1.jar Foldername

现在 program1.jar 将在 C:\Program Files\Java\jdk1.7.0_02\bin 路径中创建

于 2014-11-28T14:16:43.113 回答
2

下面的代码给了我正确的回应

jar cvf MyJar.jar *.properties lib/*.jar -C bin .  

它添加了(log4j)属性文件,它在 lib.jar 中添加了 jar 文件。然后它进入 bin 以检索带有包的类文件。

于 2013-11-07T09:26:33.000 回答
0

不止以上——

  1. 将您的 Java 打包内容保存在一个目录中,并确保除了您的 Java 包及其相应的 Java 类之外没有任何内容。

  2. 打开命令(如果 Windows)提示,到达包含目录路径,如下所示 -

    C:> cd "C:\Users\UserABC\Downloads\Current 文件夹"

    C:\Users\UserABC\Downloads\当前文件夹>jar cvf hello-world-1.0.1.jar .

于 2016-03-16T19:05:46.153 回答
0

为避免将源文件添加.java到您的包中,您应该这样做

cd src/
jar cvf mylib.jar com/**/*.class

假设你的项目结构是

myproject/
    src/
      com/
        mycompany/
          mainClass.java
          mainClass.class
于 2017-11-06T14:33:18.773 回答
0

这就是我在 .sh 文件中所做的,让我们考虑 install.sh

#!/bin/sh
echo Installing
cd .../Your_Project_Directory/com/cdy/ws/
jar cfe X.jar Main *.class
cd .../Your_Project_Directory/
ln -s .../Your_Project_Directory/com/cdy/ws/X.jar X
echo Testing...
java -jar X
echo You are Good to Go...Use hapily
#etc.

在 Class 目录中创建 Executable Jar 文件并在您想要的任何位置创建 SymLink。

使用它运行它,

$ sh install.sh[ENTER]
$ java -jar X[ENTER]
于 2018-05-07T17:04:29.947 回答
0

假设您的项目文件夹结构如下:

c:\test\classes\com\test\awt\Example.class

c:\test\classes\manifest.txt

您可以发出以下命令来创建“Example.jar。

jar -cvfm Example.jar manifest.txt com/test/awt/*.class

例如 :

从命令提示符“cd C:\test\classes”转到文件夹结构

C:\test\classes>jar -cvfm Example.jar manifest.txt com/test/awt/*.class

于 2018-09-11T07:39:27.380 回答