2015-04-22 144 views
1

我试图通过cmd行创建JAR文件,但在编译它时相对于使用Eclipse创建的JAR文件时遇到了问题。Eclipse JAR创建与cmd行JAR创建

要使用命令行版本,我做到以下几点:

jar cf "myjar.jar" A.java B.java C.java 

在我从运行该命令的目录中,只存在三个文件。

当我从Eclipse构建它时,右键单击三个选定的文件。然后执行:导出 - > JAR文件 - >完成(压缩JAR的内容)。

尺寸差异非常明显,19 KB(cmd)对43 KB(Eclipse)。当我尝试使用命令行创建的JAR时,我的应用程序失败。我的猜测是,命令行创建的JAR不包括所有必需的依赖关系(三类之外)。

任何帮助我做错了将不胜感激!

+0

jar是一个zip文件。你可以用winzip等检查内容,看看有什么不同。 – Sanj

+0

*当我尝试使用命令行创建的JAR时,我的应用程序失败。* - >创建存档或启动程序时出现任何错误消息?请提供更多信息。 – Turing85

+0

你有什么依赖性?你的类路径上有什么?当你从命令行运行jar时,你会看到什么错误信息?每个jar里面有什么(用jar tf命令查看它,或者使用像7zip这样的zip文件查看器)? –

回答

2

JDK的工具JAR仅仅是一个ZIP压缩然后当你尝试:

jar cf "myjar.jar" A.java B.java C.java 

你真的要创建具有3 Java源代码拉链,你是不是编译代码。

你必须做到:

javac *.java 
jar cf "myjar.jar" *.class 

当你使用Eclipse生成到IDE是假设你想在一个JAR编译和打包生成的类文件。此外,还有一个MANIFEST.MF生成可以从命令行不同和Eclipse

编辑: 如果要执行与多个JAR应用程序检查:Setting multiple jars in java classpath

+0

这似乎是正确的答案。我正在使用Apache Commons Lang API,并且我有JAR文件。有没有办法在javac命令中包含该依赖项?对不起,Java相当新。 – jpints14

+0

您不能在其他JAR中包含JAR,您必须使用两个jar分发您的应用程序并配置类路径。选中此项:http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath –

+0

可以为编译时间和执行时间定义类路径。你需要这两者。这是正确的方法。 –

1

你编译.java文件?

在构建.jar文件时,您必须包含.class文件,它们是编译的java文件。

的信息请参见文档上建立一个jar文件: https://docs.oracle.com/javase/tutorial/deployment/jar/build.html

Eclipse将编译在后台的源代码,并在您的jar文件的编译版本。 Eclipse还提供了一个选项,以包含使文件大小有所不同的来源。

+0

正如我在之前对Ernesto的评论中提到的那样,需要Apache jar来构建其他3个类。我只是将.java文件放在jar中,当我调用“java -cp”时,我会包含Apache jar吗? – jpints14