如何打包程序为 JAR 文件(转)
其实 JAR 文件的格式是 ZIP 格式的, 因此它可以用各种能够处理 ZIP 文件的工具来进行操作, 例如 WinZip, WinRAR, PKZIP 等, 还有 JDK 自带的 JAR 工具. 因此我们将就使用这两种类型的工具来制作 JAR 文件进行讨论.
首先需要声明的是, 并不是所有类型的 Java 应用程序都能打包到单独的一个 JAR 文件中去. 必须符合一定的条件, 一个 Java 应用程序的所有文件才能打包到一个文件中去. 另外, JAR 文件有两种, 一种是有清单(manifest)文件的, 一种是没有清单文件的(这种主要用来存放 Java 库文件). 清单文件有许多作用, 我这里只讨论那种可以使用 Java 来运行 JAR 文件的清单文件. 就是使用命令
java -jar MyJarFile.jar
可以直接运行的 JAR 文件. 这种 JAR 文件的清单文件的内容如下所示:
Manifest-Version: 1.0
Main-Class: MainClassFile
Created-By: Your Company
. 例如, 假定你的程序里面的主程序是 com.abc.MainFrame, 那么你的这个清单文件的内容是:
Manifest-Version: 1.0
Main-Class: com.abc.MainFrame
Created-By: Abc Company
. 然后我想讨论一下打包到单独 JAR 文件的应用程序的编写需要注意的问题.
程序的资源文件(如*.gif, *.jpg, *.jpeg, *.properties 等等)不能使用物理路径, 只能使用相对于当前类文件的相对资源路径, 只有这样才能保证打包以后程序才能找到这些资源文件. 那么, 这些文件在打开的时候都要使用下列语句:
URL url = getClass().getResource(String name);
或者
InputStream in = getClass().getResourceAsStream(String name);
. 例如:
javax.swing.ImageIcon icon = new javax.swing.ImageIcon("1.gif");
那么打包后的程序将不能找到这个图片, 因为它引用了一个物理路径的图片, 它应该改成这样:
javax.swing.ImageIcon icon = new javax.swing.ImageIcon(getClass().getResource("1.gif"));
. 其它的资源文件的使用也与此相似. 不过属性文件(*.properties)的使用, Java 自动会加载 JAR 文件中的属性文件, 例如:
ResourceBundle.getBundle("com.abc.test");
那么, 这个文件只要放在 JAR 文件目录结构下的 com/abc/test.properties, Java 就能自动找到这个文件.
接着我想讨论一下使用 JAR 工具如何来创建 JAR 文件, 这个工具可以在 <JDK_install_HOME>/bin 下找到, 文件名在 Win32 版下为 jar.exe, Unix 下为 jar. 在命令行窗口下输入 jar 命令, 将看到下列输出:
用法:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的归档
-t 列出归档内容的列表
-x 展开归档中的命名的(或所有的〕文件
-u 更新已存在的归档
-v 生成详细输出到标准输出上
-f 指定归档文件名
-m 包含来自指定的清单(manifest〕文件的清单(manifest〕信息
-0 只存储方式;未用ZIP压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和归档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺
示例1:将两个class文件归档到一个名为 'classes.jar' 的归档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest〕文件 'mymanifest' 将 foo/ 目录下的所有
文件归档到一个名为 'classes.jar' 的归档文件中:
jar cvfm classes.jar mymanifest -C foo/ .
假设你想将上面的 com.abc.MainFrame 为主程序的一个应用程序打包为一个单独的 JAR 文件, 那么首先在程序的根目录下建立内容如前所述的清单文件, 文件名为 MANIFEST.MF, 然后在命令行窗口下, 转变当前目录为程序根目录, 输入下列命令:
jar cvfm abcApp.jar MANIFEST.MF *.*
, 那么, 会使用现有的清单文件创建一个名为 abcApp.jar 的文件, 并将目录下的所有文件(包括子目录)加入此 JAR 文件中.
而如果希望使用非 JAR 工具建立 JAR 文件, 建议使用 WinRAR. 首先还是需要建立一个清单文件(名字必须为MANIFEST.MF), 向此文件中写入同使用 JAR 工具时一样的内容, 接着需要建立一个META-INF子目录, 然后将 MANIFEST.MF 放入此目录, 接着就可以保持目录结构将所有这些内容使用 WinRAR 压缩为 ZIP 格式的文件, 文件名取为 abcApp.jar 即可. 如下所示, 目录结构为:
+
|
+-----/META-INF/MANIFEST.MF
|
+----com/abc/MainFrame.class
. 选中程序根目录下的各个子目录及根目录下的文件, 点击鼠标右键, 选择"添加到压缩包..."命令, 然后指定文件名为 abcApp.jar, 格式为 ZIP, 最后点击"确定"即可完成.
由于作者的表达力和能力所限, 因此这篇讨论的内容有一些不尽如人意的地方. 因此您可以参考 Sun Microsystems 的 Java 教程里面的 JAR 部分作为补充(英文版), 地址: http://java.sun.com/docs/books/tutorial/jar/.
分享到:
相关推荐
Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总 本文档将详细介绍 Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总。Java 是一种流行的编程语言,广泛应用于软件开发、Android 应用开发...
在Java编程中,将程序打包成JAR文件是常见的部署方式,这使得代码可以作为一个独立的可执行单元进行分发。然而,在打包包含数据库连接的Java应用程序时,可能会遇到一些问题,尤其是涉及到像MySQL这样的外部数据库。...
- **JAR(Java Archive)**:JAR文件是Java平台特有的归档格式,它允许将多个类文件和其他资源(如图像、声音等)打包到一个文件中。通过使用`jar`命令或者构建工具(如Maven、Gradle)可以创建JAR文件。 - **...
NULL 博文链接:https://jarg.iteye.com/blog/852885
"Java 程序或项目打包成 jar 与 exe 文件" Java 程序或项目打包成 jar 与 exe 文件是 Java 开发中一个重要的步骤。在这里,我们将详细介绍如何将 Java 程序或项目打包成 jar 文件,然后将 jar 文件转换成exe 文件,...
Java程序打包为Jar文件在Eclipse中的实现 Java程序员在开发过程中经常会遇到这样一个问题:如何将编写好的Java程序打包成一个可执行的Jar文件?在Eclipse中,我们可以通过简单的步骤将Java程序打包成Jar文件,本文...
然而,当项目完成后,我们需要将其打包成可执行的JAR文件,以便在其他环境中运行。在某些情况下,我们的项目可能依赖于外部的JAR库或者需要读取外部的配置文件,这在打包时需要特别处理。本文将详细介绍如何在...
1. **生成可执行文件**:JSmooth的核心功能是将JAR文件打包成EXE格式,这样用户只需双击即可运行程序,无需复杂的配置或安装JVM。 2. **集成JVM**:JSmooth会自动检测并包含适当的JVM版本,确保应用程序能在没有...
将springboot打包成的jar文件做成windows服务,解决java程序自启动问题,适合现场部署后无人看管情况,断电后服务器启动后不用管理springboot服务,不用打开cmd,也不担心现场人员误操作关闭cmd窗口。
在Java开发过程中,经常需要将开发完成的应用程序打包成可执行的JAR文件以便于部署和分发。本文将详细介绍如何使用Eclipse IDE将Java项目打包成可执行的JAR文件。 #### 一、准备工作 在开始打包之前,请确保以下...
总结来说,本篇文章主要介绍了Java程序如何接收命令行参数以及如何将Java项目打包成可执行的JAR文件,重点在于理解参数传递机制、内部类的使用以及Eclipse中JAR文件的打包和运行。这些都是Java开发中常见的操作,...
在介绍Java程序打包成jar文件和exe文件的详细步骤之前,我们首先要了解基本概念。Java程序通常被打包成jar文件,即Java Archive文件,它是一种基于ZIP格式的压缩文件格式,用于封装Java类文件和相关的元数据和资源。...
### JAVA将Class文件打包为JAR文件的详细步骤与注意事项 #### 标题与描述概述 在Java开发中,将多个Class文件打包成一个JAR(Java Archive)文件是一种常见的做法,这有助于简化项目的部署过程并提高代码的可管理性...
### Java打包成jar文件,以及将jar文件导出为exe文件方法详解 #### 一、Java打包成jar文件的方法 ##### 方法一:使用Eclipse导出jar文件 1. **打开项目**:在Eclipse中打开您希望打包的Java项目。 2. **选择导出...
总结来说,JAR文件是Java开发中不可或缺的一部分,无论是为了打包应用程序,还是为了实现库的分发,都提供了极大的便利。了解并掌握如何创建和使用可执行的JAR文件,对Java开发者来说至关重要。通过正确的配置和使用...
Java打包成jar文件是将Java程序的类文件、资源文件以及相关的配置文件打包成一个可执行的归档文件,这在软件开发中是一项常见的任务。jar(Java Archive)文件不仅方便了代码的分发和存储,还能提高程序的运行效率,...
- 第2步:选择“JAR in EXE”模式,导入已经打包好的jar文件。 - 第3步:填写项目名称,指定输出exe文件的目录。 - 第4步:根据程序类型选择图形界面或控制台模式,填写exe文件名和图标。 - 第5步:添加主jar...
JAR(Java Archive)是 Java 开发工具包 (JDK) 中的一个实用程序,用于将多个 Java 类文件和其他资源文件打包成一个 JAR 文件。JAR 文件不仅便于分发和部署,还支持对文件进行压缩,减少文件大小。 #### 二、JAR ...
6. 添加jar文件到Class Path,选择主程序的主类。 7. 指定Java的最低JRE版本,以确保兼容性。在`Advanced Options` > `Search sequence`中设置JRE路径,以便在目标机器上捆绑JRE,即使目标机器未安装JRE也能运行程序...
在Java开发中,JAR文件通常用于封装库、应用程序或者Java小应用程序(Applet)。本实例将通过详细步骤介绍如何创建并使用JAR文件。 首先,你需要确保已经编写了Java源代码并编译为.class文件。例如,这里有两个文件...