我正在学习Java,但我遇到了问题。我创建了6个不同的类,每个类都有自己的main()
方法。我想为每个类创建可执行文件.jar
,即6个可执行文件.jar
。
到目前为止,我试过
java -jar cf myJar.jar myClass.class
我得'无法访问jarfile cf'。我做错了什么,但我不知道是什么。如果这意味着什么,我也在使用Eclipse IDE。
答案 0 :(得分:107)
要创建.jar文件,您需要使用jar
代替java
:
jar cf myJar.jar myClass.class
此外,如果您想使其可执行,您需要为您的应用程序指明入口点(即,public static void main(String[] args)
的类)。这通常是通过创建包含Main-Class
标头的manifest文件(例如Main-Class: myClass
)来完成的。
但是,正如Mark Peters指出的那样,使用JDK 6,您可以使用e
选项来定义入口点:
jar cfe myJar.jar myClass myClass.class
最后,你可以执行它:
java -jar myJar.jar
答案 1 :(得分:15)
你已经提到过你正在使用Eclipse ... Eclipse可以为你创建JAR,只要你运行每个有一次main的类。右键单击该项目,然后单击“导出”,然后在Java文件夹下选择“Runnable JAR file”。在启动配置中选择类名,选择保存jar的位置,并在必要时决定如何处理库。点击完,擦上裤子。
答案 2 :(得分:8)
通常你需要在清单中放入比-e
开关更多的内容,在这种情况下,语法是:
jar -cvfm myJar.jar myManifest.txt myApp.class
其中包括:“create verbose jarFilename manifestFilename”,后跟您要包含的文件。
请注意,您提供的清单文件的名称可以是任何名称,因为jar
会自动将其重命名并将其放在jar文件中的正确位置。
答案 3 :(得分:4)
方式1:
让我们有java文件test.java,它包含主类testa 现在我们首先将java文件编译为javac test.java 我们在同一目录中创建文件manifest.txt,然后编写Main-Class:mainclassname。例如:
Main-Class: testa
然后我们通过这个命令创建jar文件:
jar cvfm anyname.jar manifest.txt testa.class
然后我们通过这个命令运行jar文件:java -jar anyname.jar
方式2:
让我们有一个名为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 ......
答案 4 :(得分:2)
将所有6个班级分配到6个不同的项目。然后创建所有6个项目的jar文件。通过这种方式,您将获得6个可执行jar文件。