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路径中创建一个比上面更简单的路径-
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,新的团队成员不会感到困惑,等等。。。