Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建具有包结构的jar文件?_Java_Jar - Fatal编程技术网

Java 如何创建具有包结构的jar文件?

Java 如何创建具有包结构的jar文件?,java,jar,Java,Jar,我有一个文件夹结构 /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级别。 谁能告诉我生成包结构的命令是什么 谢谢你想要的 $ jar cvf asd.jar . 将目录(例如)指

我有一个文件夹结构

/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级别。 谁能告诉我生成包结构的命令是什么

谢谢你想要的

$ jar cvf asd.jar .

将目录(例如
)指定为
jar
源。这将在jar文件中维护您的文件夹结构。

来自包含
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
jar cvf helloworld.jar com\test\hello\Hello.class  com\test\orld\HelloWorld.class

您需要从文件的根开始创建JAR

例如:

jar cvf program.jar -C path/to/classes .
它假定
path/to/classes
包含
com
目录


仅供参考,现在大多数人直接使用
jar
命令是比较少见的,因为他们会使用一个构建工具,例如或来处理这个(以及构建的其他方面)。允许这些工具中的一个来处理构建的各个方面是非常值得的,而且使用一个好的IDE来帮助编写
build.xml
(Ant)或
pom.xml
(Maven)更容易。下面的代码给了我正确的响应

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

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

步骤1:使用命令提示符(或Linux shell提示符)转到保存类的目录
喜欢这个项目。
C:/workspace/MyProj/bin/classess/com/test/*.class

使用以下命令转到目录箱:

cd C:/workspace/MyProj/bin
步骤2:使用下面的命令生成jar文件

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

使用上面的命令,这些类将被放置在目录结构的jar中

指定的文件夹名必须位于
C:\Program Files\Java\jdk1.7.0\u 02\bin
路径上 具有类文件的Foldername

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

现在,program1.jar将在C:\Program Files\Java\jdk1.7.0\U 02\bin路径中创建一个比上面更简单的路径-

  • 将Java打包内容保存在一个目录中,并确保里面除了Java包及其对应的Java类之外没有其他内容

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

    C:>cd“C:\Users\UserABC\Downloads\Current Folder”

    C:\Users\UserABC\Downloads\Current Folder>
    jar cvf hello-world-1.0.1.jar。


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

    cd src/
    jar cvf mylib.jar com/**/*.class
    
    假设你的项目结构是

    myproject/
        src/
          com/
            mycompany/
              mainClass.java
              mainClass.class
    

    这是我在.SH文件中所做的,让我们考虑安装.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.
    
    在类目录中创建可执行Jar文件,并在任意位置创建符号链接

    使用

    $ sh install.sh[ENTER]
    $ java -jar X[ENTER]
    

    假设项目文件夹结构如下所示:

    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

    谢谢..我在运行上面的命令后得到了包结构:)@Daniel请你帮我从这个源代码github.com/upictec/org.json.me构建一个jar好吗我试过你的指令了。我甚至安装了maven,但仍然找不到jar:SI对此感到困惑让它更具体一点可能会帮助其他人:如果您的类文件位于folder1/folder2/folder3/com/example/test中,并且希望包结构为com.example.test,那么命令应该是
    jar cvf program.jar-C folder1/folder2/folder3。
    (当然,句点是命令的一部分。)@Adam Batkin你能帮我用这个源代码构建一个jar吗?我尝试了你的说明。我甚至安装了maven,但仍然无法获得jar:S@hBrent最后一个
    是什么意思?@smwikipedia它意味着用指定路径上的所有文件构建jar(类似于在其他上下文中使用
    *.
    )。如果您只想包含特定文件,我认为您可以指定文件名或部分文件名,而不是句号。(例如,我认为您可以只包含具有特定扩展名的文件,但由于这不是我的专业领域,我不确定其语法是什么。)@iamcreasy它可以工作,但是遵循普遍接受的惯例,使用
    .JAR
    结束JAR文件是一个好主意。通过这种方式,您可以知道文件包含什么,第三方工具可以轻松找到JAR,新的团队成员不会感到困惑,等等。。。