Java Eclipse创建可执行的JAR文件。

3
我使用Eclipse创建可执行JAR。它依赖于其他外部JAR文件。
在Eclipse中,你只需要选择“提取所需的库到生成的JAR”选项即可轻松创建可执行JAR文件。
你可以创建一个可执行的JAR文件,在安装有JRE的任何地方都可以执行它。
但是,如果我使用命令行编译JAR文件。
javac -classpath [外部 JAR 文件] *.java
jar cfm [名称].jar manifest *.class [外部 JAR 文件] 它可以生成JAR文件。但是,这个JAR文件只能在生成它的目录中执行。如果我将它放到另一个目录或机器上,它会报告“NoClassDefFoundError”。
因此,我的问题是如何使用命令行生成可执行JAR文件,就像在Eclipse中一样。

你尝试过将所需的库选择为生成的jar包而不是提取吗? - MBU
我对Eclipse没有任何问题。由Eclipse生成的jar文件可以在任何地方执行。我的问题是如何使用命令行来完成这个操作。 - chnet
你用WinRAR或类似的软件打开JAR文件查看里面是否有其他JAR文件被打包了吗? - Tudor
3个回答

3
一个jar文件不能包含其依赖的jar文件。在Eclipse中,它会解压所有来自依赖jar的类,并将其与您的类文件一起打包到单个jar中。如果不使用Eclipse,您需要:

1)创建一个清单文件,列出所有依赖项jar

Manifest-Version: 1.0
Main-Class: Your Main class
Class-Path: dependency1.jar dependency2.jar dependency3.jar
 dependency4.jar dependency5.jar

2) 使用包含所有依赖项jar的类路径,并使用上面创建的清单文件来创建您的jar。

3) 将所有依赖项jar放置在创建jar的同一文件夹中。

现在您的文件夹看起来像这样:

yourjar.jar(带有上面创建的清单文件) dependency1.jar dependency2.jar dependency3.jar dependency4.jar dependency5.jar

4) 现在,如果您想共享此文件夹,则需要共享此文件夹,并且可以从此文件夹启动您的jar。 这是您的可执行文件夹,您可以从任何地方运行它。


是的,我使用了你的方法。我需要分享文件夹并从文件夹启动jar文件。但是如果我使用Eclipse生成jar文件,我就不需要文件夹了。我可以将jar文件(而不是文件夹)放在任何地方。 - chnet
使用单个JAR文件时,如果任何依赖JAR包有更新,您需要重新打包整个JAR文件;您不能简单地构建并替换修改后的依赖JAR包。采用这种方法,您只需更新修改后的JAR包即可。 - Marimuthu Madasamy

2
Eclipse使用Ant来打包jar文件,您可以在导出窗口中勾选“保存Ant文件”复选框以保存Eclipse用于生成jar的Ant脚本: screenshot 因此,您可以生成Ant Build.xml脚本,然后直接从命令行使用ant执行它,而无需再使用Eclipse。

0

我创建可执行jar文件的首选方法是使用一个叫做one-jar的工具。我在博客文章中讨论了如何在maven和ant中使用它:我的one jar博客文章


该URL现在返回404错误。您是指这个链接吗? - David Pärsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接