【发布时间】:2011-07-12 14:30:19
【问题描述】:
我有一个由两个简单的 Java Swing 文件组成的程序。
如何为我的程序制作可执行的 JAR 文件?
【问题讨论】:
-
你在问什么?如何执行 jar 或如何从 jar 创建可执行文件(一个命令,如 run.cmd)?
标签: java jar executable-jar
我有一个由两个简单的 Java Swing 文件组成的程序。
如何为我的程序制作可执行的 JAR 文件?
【问题讨论】:
标签: java jar executable-jar
jar 文件只是一个包含 java 文件集合的文件。要使 jar 文件可执行,您需要指定 main 类在 jar 文件中的位置。示例代码如下。
public class JarExample {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
// your logic here
}
});
}
}
编译你的类。要制作 jar,您还需要创建一个清单文件 (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。
【讨论】:
jar cvfe jarexample.jar com.example.jar.JarExample *.class
jar 命令是否需要单独的路径变量?我可以毫无问题地使用java 和javac 命令,但是jar 命令给了我一个'jar' is not recognized as an internal or external command 错误消息。
which 或在 powershell 中使用 get-command 来查看 java 和 javac 在您的机器上的实际位置,以及那里是否还有 jar 程序。
在 Eclipse 中,您可以简单地执行以下操作:
右键单击您的 Java 项目并选择 导出。
选择 Java -> 可运行的 JAR 文件 -> 下一步。
选择启动配置并选择项目文件作为您的主类
选择您要保存的目标文件夹,然后单击完成。
【讨论】:
jar cvfe myjar.jar package.MainClass *.class
其中MainClass 是带有main 方法的类,package 是MainClass 的包。
请注意,在执行此操作之前,您必须将 .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
testClass 是否在您的.class 文件之一中定义?确保在运行此命令之前已编译源 (.java) 文件。此外,通常你的类应该是 UpperCamelCase,你可以尝试将其重命名为 TestClass。
如果您使用 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 文件将位于 target 目录下。
【讨论】:
现在回答这个问题为时已晚。但是,如果现在有人正在寻找这个答案,我已经让它运行起来没有错误。
首先确保下载并添加 maven 到路径。如果您已正确添加到路径,[mvn --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,它将在target 目录下生成一个类似于ProjectName-0.0.1-SNAPSHOT.jar 的jar 文件。
现在导航到cd target 的目标 目录。
最后输入java -jar jar-file-name.jar,是的,如果您的程序没有任何错误,这应该会成功。
【讨论】: