【发布时间】:2011-06-03 15:05:24
【问题描述】:
我正在学习 Java,但遇到了问题。我创建了 6 个不同的类,每个类都有自己的 main() 方法。我想为每个类创建可执行的.jar,即6个可执行的.jar文件。
到目前为止我尝试过
java -jar cf myJar.jar myClass.class
我得到 '无法访问 jarfile cf'。我做错了什么,但我不知道是什么。如果这意味着什么,我也在使用 Eclipse IDE。
【问题讨论】:
我正在学习 Java,但遇到了问题。我创建了 6 个不同的类,每个类都有自己的 main() 方法。我想为每个类创建可执行的.jar,即6个可执行的.jar文件。
到目前为止我尝试过
java -jar cf myJar.jar myClass.class
我得到 '无法访问 jarfile cf'。我做错了什么,但我不知道是什么。如果这意味着什么,我也在使用 Eclipse IDE。
【问题讨论】:
为了创建一个.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
【讨论】:
cf 甚至是 java 的有效选项吗?无论哪种方式,他都想创建 jar,而不是运行它。无论如何,根据问题。
-jar 参数吗?另外,由于您没有指定清单,因此这不会使其可执行。 (显然在 JDK 6+ 中,您可以使用“e”作为快捷方式来避免手动提供清单:jar cfe myJar.jar myClass myClass.class)
jar -cvfm out.jar META-INF/MANIFEST.MF src/*.class
您刚才提到您正在使用 Eclipse...Eclipse 可以为您创建 JAR,只要您运行了每个具有 main 一次的类。右击项目并单击Export,然后选择Java文件夹下的“Runnable JAR file”。在启动配置中选择类名,选择保存 jar 的位置,并在必要时决定如何处理库。点击完成,在裤子上擦手。
【讨论】:
方式 1:
让我们有一个包含主类 testa 的 java 文件 test.java 现在首先我们将我们的 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......
【讨论】:
将所有 6 个类放到 6 个不同的项目中。然后创建所有 6 个项目的 jar 文件。这样你会得到6个可执行的jar文件。
【讨论】:
与-e 开关相比,您通常需要在清单中添加更多内容,在这种情况下,语法为:
jar -cvfm myJar.jar myManifest.txt myApp.class
内容为:“create verbose jarFilename manifestFilename”,后跟要包含的文件。
请注意,您提供的清单文件的名称可以是任何名称,因为jar 会自动重命名它并将其放入 jar 文件中的正确位置。
【讨论】: