Java创建.jar文件


74

我正在学习Java,但遇到了问题。我创建了6个不同的类,每个类都有自己的main()方法。我想.jar为每个类创建可执行文件,即6个可执行.jar文件。

到目前为止,我尝试了

java -jar cf myJar.jar myClass.class

我得到“无法访问jarfile cf”。我做错了,但我不知道该怎么办。如果这意味着某种意义,我还将使用Eclipse IDE。

Answers:


119

为了创建.jar文件,您需要使用jar而不是java

jar cf myJar.jar myClass.class

另外,如果要使其可执行,则需要为应用程序指示一个入口点(即带有的类public static void main(String[] args))。通常,这是通过创建包含标头(例如)的清单文件来实现的。Main-ClassMain-Class: myClass

但是,正如Mark Peters指出的那样,在JDK 6中,您可以使用该e选项来定义入口点:

jar cfe myJar.jar myClass myClass.class 

最后,您可以执行它:

java -jar myJar.jar

也可以看看


这是缺少重点吗?是cf甚至有效的选项java?无论哪种方式,他都想创建jar,而不是运行它。反正根据问题。
马克·彼得斯

@马克·彼得斯:错别字,我的意思是罐子。谢谢。
若昂·席尔瓦

在这种情况下,您不需要-jar参数吗?另外,由于您未指定清单,因此这将使其无法执行。(显然是在JDK 6+您可以使用“E”作为快捷方式,以避免手动提供的清单:jar cfe myJar.jar myClass myClass.class
马克·彼得斯

当我尝试运行它时,我总是会得到“在myJar.jar中没有主清单属性”:/
Maslor 2015年

如果您需要可执行jar,则需要添加清单文件,例如jar -cvfm out.jar META-INF/MANIFEST.MF src/*.class
Hritik

16

确实,您已经提到过您正在使用Eclipse ... Eclipse可以为您创建JAR,只要您运行每个具有一个main的类即可。右键单击该项目,然后单击“导出”,然后在Java文件夹下选择“可运行的JAR文件”。在启动配置中选择类名称,选择一个位置来保存jar,并在必要时决定如何处理库。单击完成,在裤子上擦手。


10

通常,您需要在清单中添加的内容比通过-e开关获得的更多,在这种情况下,语法为:

jar -cvfm myJar.jar myManifest.txt myApp.class

内容为:“创建详细的jarFilename manifestFilename”,后跟要包含的文件。

请注意,您提供的清单文件的名称可以是任何名称,因为jar它将自动重命名清单文件并将其放置在jar文件中的正确位置。


6

方式1:

让我们有一个包含主类testa的Java文件test.java,现在我们首先像javac test.java一样简单地编译我们的java文件,在同一目录中创建manifest.txt文件,并编写Main-Class:mainclassname。例如:

  Main-Class: testa

然后我们通过以下命令创建jar文件:

  jar cvfm anyname.jar manifest.txt testa.class

然后我们通过以下命令运行jar文件:java -jar anyname.jar

方式二:

让我们有一个名为one的包,每个类都在其中。然后我们通过以下命令创建jar文件:

  jar cf anyname.jar one

然后我们在anyname.jar文件中的META-INF目录中打开manifest.txt并编写

  Main-Class: one.mainclassname 

在第三行中,然后我们通过以下命令运行jar文件:

  java -jar anyname.jar

使jar文件具有多个类文件:jar cf anyname.jar one.class two.class three.class ......


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.