如何制作可执行的JAR文件?


Answers:


83

jar文件只是包含Java文件集合的文件。为了使jar文件可执行,您需要指定mainClass在jar文件中的位置。示例代码如下。

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

编译您的类。要制作一个罐子,您还需要创建一个清单文件(MANIFEST.MF)。例如,

Manifest-Version: 1.0
Main-Class: JarExample

将编译后的输出类文件(JarExample.class,JarExample $ 1.class)和清单文件放在同一文件夹中。在命令提示符下,转到文件所在的文件夹,然后使用jar命令创建jar。例如(如果您将清单文件命名为jexample.mf)

jar cfm jarexample.jar jexample.mf *.class

它将创建可执行文件jarexample.jar。


34
只是我的两分钱:您不一定必须创建清单文件。对于jar实用程序,如果指定标志e而不是m,则只需要指定应用程序而不是清单文件的入口点(即主类)。示例:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave

1
如果创建MANIFEST.MF文件,请不要忘记以换行符结束最后一行。在Windows上,只需在末尾添加一个空行。否则,最后一个属性将不会在jar文件中创建它。在这种特殊情况下,Main-Class属性将丢失。
戴维

35

Eclipse中,您可以按照以下步骤简单地进行操作:

右键单击Java项目,然后选择导出

选择Java->可运行的JAR文件->下一步。

选择启动配置,然后选择项目文件作为主类

选择您要保存目标文件夹,然后单击完成。


启动配置:<MainClasssName>-<ProjectName>
corlaez

15

这是一行:

jar cvfe myjar.jar package.MainClass *.class

MainClass您的main方法所在的类在哪里,并且packageMainClass的包。

请注意,您必须先将.java文件编译为.class文件。

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

这个答案受到Powerslave对另一个答案的评论的启发。


我遇到错误,Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev

testClass在您的.class文件之一中定义的?.java在运行此命令之前,请确保已编译源()文件。同样,通常您的类应该是UpperCamelCase,您可以尝试将其重命名为TestClass

4

如果使用maven,则将以下内容添加到您的pom.xml文件中:

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

然后,您可以运行mvn package。jar文件将位于目标目录下。


比上面的变体。
Vishwa Ratna

0

回答这个问题为时已晚。但是,如果有人正在搜索此答案,那么我已经使其运行起来没有错误。

首先,请确保下载maven并将其添加到pathmvn --version如果您已正确添加到路径,则[ ]将为您提供版本说明。

现在,将以下代码添加到maven项目[ pom.xml],在以下代码中替换为您自己的主文件入口点,例如[ com.example.test.Test ]。

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

现在去命令行[CMD在你的项目],然后键入mvn package,它会生成一个jar文件,就像这样 ProjectName-0.0.1-SNAPSHOT.jartarget目录中。

现在导航到目标 目录cd target

最后输入java -jar jar-file-name.jar,是的,如果您的程序没有任何错误,这应该可以成功工作。

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.