【问题标题】:Java creating .jar fileJava 创建 .jar 文件
【发布时间】:2011-06-03 15:05:24
【问题描述】:

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

到目前为止我尝试过

java -jar cf myJar.jar myClass.class

我得到 '无法访问 jarfile cf'。我做错了什么,但我不知道是什么。如果这意味着什么,我也在使用 Eclipse IDE。

【问题讨论】:

    标签: java jar


    【解决方案1】:

    为了创建一个.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,而不是运行它。无论如何,根据问题。
    • @Mark Peters:错字,我的意思是罐子。谢谢。
    • 在这种情况下你不需要-jar 参数吗?另外,由于您没有指定清单,因此这不会使其可执行。 (显然在 JDK 6+ 中,您可以使用“e”作为快捷方式来避免手动提供清单:jar cfe myJar.jar myClass myClass.class
    • 当我尝试运行它时,总是得到“在 myJar.jar 中没有主清单属性”:/
    • 如果你想要可执行的jar,你需要添加清单文件,比如jar -cvfm out.jar META-INF/MANIFEST.MF src/*.class
    【解决方案2】:

    您刚才提到您正在使用 Eclipse...Eclipse 可以为您创建 JAR,只要您运行了每个具有 main 一次的类。右击项目并单击Export,然后选择Java文件夹下的“Runnable JAR file”。在启动配置中选择类名,选择保存 jar 的位置,并在必要时决定如何处理库。点击完成,在裤子上擦手。

    【讨论】:

      【解决方案3】:

      方式 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......

      【讨论】:

        【解决方案4】:

        将所有 6 个类放到 6 个不同的项目中。然后创建所有 6 个项目的 jar 文件。这样你会得到6个可执行的jar文件。

        【讨论】:

          【解决方案5】:

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

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

          内容为:“create verbose jarFilename manifestFilename”,后跟要包含的文件。

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

          【讨论】:

            猜你喜欢
            • 2015-04-24
            • 2012-07-14
            • 1970-01-01
            • 1970-01-01
            • 2016-06-07
            • 2015-09-09
            • 2019-01-22
            • 2011-05-14
            • 1970-01-01
            相关资源
            最近更新 更多