Java程序的打包发布也就是打包成jar压缩包的过程,jar压缩包是可以直接点击运行的,类似.exe文件,所以我们要做的就是把java源文件编译后,打包成jar文件,那么我们的用户就可以直接双击运行了。是不是很爽。
其实,我们还可以作很多,比如我们也可以用工具把java程序做成.exe文件,我们也可以做成linux下可以运行的程序。
下面我们详细介绍步骤,并说明每个步骤的原因,知其然也得知其所以然。
一、Java程序的打包基本上分两部分,一部分是一般程序的打包,另一部分就是特殊的插件打包了,我们只注重一般程序的打包,插件的打包方法我们不研究,毕竟没几个人搞插件开发。
二、jar运行的时候,它在怎么工作呢?
了解这个是很重要的,知道这个以后,你就明白为什么我们需要这个文件、需要哪个文件,所以要仔细看这部分。
简单的说:
双击jar文件->jar会读取manifest.mf(或者以mf为后缀的)这个打包清单->清单里有主类名和运行需要的库->根据这些信息jar就可以开始运行里面的java程序了->当有和系统进行交互的时候(比如swt需要系统的界面窗口信息,如果没有和系统进行信息交互则不必包含系统的库文件,其实那个时候你也没有需要的库文件),我们就要读取系统的库文件,调用系统的东西,所以我们要把系统的库函数连接文件(***.dll)包括进来。
这些就是jar的工作内部过程,那么下面我们就满足它的要求,创建它。
三、立即开工
1、第一步,创建好你的swt程序,我们以这个为例,我们不避讳任何为题,因为这个包含的比较全面,基本问题都遇到了,所以你要先创建一个简单的swt程序,例如一个简单的对话框Swttest.java。
2、下面要做第二步,写好你的配置文件,取名为manifest.mf(名字随便,后缀为mf即可)具体格式:
Manifest-Version: 1.0
Main-Class: Swttest
Class-Path: ./lib/swt.jar ./lib/runtime.jar
说明:
第一行的意思是指定清单文件的版本号,不同版本的清单文件格式是稍有不同的,所以为了让jar读取正确的数据,我们必须指定它的格式,当然你也可以换取其他版本,比如2.0等,但是格式要稍微变化一下,这里不详细介绍了。
第二行的意思是指定主程序的类的入口,主类都明白吧,就是包含主函数的类,把这个类写上,jar就会从这个类开始执行。
第三行的意思是由于我们要独立运行,所以我们要把程序执行所需要的环境模拟出来,而这些包就是需要的函数和同文件等,runtime.jar时必须写的,swt.jar不一定,如果你是一般的程序,没有swt的事儿,那么这个就不用。
3、第三步用jar生成结果,jar是一个生成jar包的命令,在命令行下输入jar或jar –help 会出现:
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-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/ .
知道了jar命令的用法,我们开始打包我们的文件,我们不用其他工具,就用jdk自带的jar打包我们的东西,这样我们可以更加独立的进行工作。
假设我现在有一个简单的helloworld程序,主类是hello。
方法一:让程序自动生成manifest.mf文件
jar cvf test.jar hello.class
执行语句后生成一个包,然后我们改动一下里面的文件。
加一句:Main-Class:(空格)hello
然后压缩回jar文件,执行即可。
方法二:用我们自己写的manifest.mf
先写出我们自己的manifest.mf文件
jar cfm test.jar manifest.mf hello.class
注意:
如果有内部类,不用写内部类,java会自己根据主类找出你的其他类,只要把他们的class文件全部打包进来就可以了。
如果有绝对路径的东西,
例如javax.swing.ImageIcon icon = new javax.swing.ImageIcon("1.gif");
那么打包后的程序将不能找到这个图片, 因为它引用了一个物理路径的图片, 它应该改成这样:
javax.swing.ImageIcon icon = new javax.swing.ImageIcon(getClass().getResource("1.gif"));
根据这两个方法,基本上我们日常大部分的操作都可以进行了。
导入第三方JAR包
用myeclipse 生成好JAR文件之后,进入META-INF文件夹找到MANIFEST.MF文件
修改
<!--EndFragment-->
分享到:
相关推荐
Java打包JAR(Java Archive)是一项常见的开发任务,它允许我们将多个类文件、资源和配置文件集合到一个可执行的JAR文件中。这有助于简化代码分发、部署和存储,同时也支持Java的类加载机制。在Eclipse这样的集成...
Java打包成JAR文件是将源代码编译后的字节码和相关资源组合在一起的常见方式,便于分发和执行。以下是对三种不同打包方法的详细分析和比较: 1. **使用Eclipse插件fat.jar打包** `fat.jar`插件允许开发者将所有...
Java打包JAR(Java Archive)文件是将多个类文件、资源文件和其他相关文件组合到一个单一的可执行文件中,以便于分发和执行。在Java开发中,JAR文件通常用于封装库、应用程序或者Java小应用程序(Applet)。本实例将...
大家都知道,通常Java程序需要JVM与OS互动才能运行于本地环境之上,所谓鱼与熊掌不可兼得,这样做虽然极大降低了程序的移植难度,却同时增加了程序的环境要求,因为无论你用什么方法,总需弄个虚拟机才能让你的Java...
这个名为"JAVA打包jar教程.rar"的压缩包包含了一整套关于如何打包Java程序为JAR文件的教程资源。以下是这个教程可能涵盖的知识点: 1. **JAR文件**:JAR是Java平台上的归档格式,用于存储多个类文件、资源文件以及...
Java打包和发布的基础是将Java代码打包成JAR(Java Archive)文件,这是一种方便管理和分发Java应用程序的方式。JAR文件本质上是多个.class文件的ZIP压缩格式,它允许开发者将相关的类、资源和元数据组织在一起,...
### Java 打包成 JAR 文件的详细指南 在Java开发过程中,将项目打包成一个JAR(Java Archive)文件是非常常见的做法。JAR文件不仅可以方便地进行分发与部署,还能有效地组织类文件和资源文件。根据提供的信息,本文...
【Java 打包成 JAR 和 EXE 文件】 在 Java 开发中,有时我们需要将编写的程序打包成可执行文件,以便用户能够更方便地运行。对于 Java 程序,最常见的打包方式是生成 JAR (Java ARchive) 文件,这是一种归档格式,...
在Java开发过程中,将项目打包成JAR(Java Archive)文件是常见的操作,这使得代码可以方便地分发和执行。JAR文件本质上是一个ZIP格式的归档,包含类文件、资源文件以及元数据。本篇文章将深入探讨如何打包Java项目...
NULL 博文链接:https://jarg.iteye.com/blog/852885
在Java开发过程中,将项目打包成可执行的jar文件是一项常见的任务,这使得代码可以方便地在不同环境中部署和运行。然而,有时在打包过程中可能会遇到一些错误,比如"没有主清单属性"。这个错误表明jar文件缺少了必要...
### Java 文件打包成 JAR 文件详解 #### 一、JAR 命令概述 JAR(Java Archive)是 Java 开发工具包 (JDK) 中的一个实用程序,用于将多个 Java 类文件和其他资源文件打包成一个 JAR 文件。JAR 文件不仅便于分发和...
Java打包技术是将Java应用程序和必要的运行环境(如JDK)整合到一起,使得用户无需安装额外的Java环境即可运行程序。在Java开发过程中,为了方便分发和部署,我们通常会将应用及其依赖打包成一个可执行的格式,比如...
在Java开发过程中,将项目打包成可执行的JAR(Java Archive)文件是常见的操作,这使得代码可以方便地分发、部署和运行。本文将详细介绍如何将Java工程打包成可执行的JAR文件。 首先,确保你有一个完整的Java工程,...
Java jar包是Java应用程序的可执行格式,它包含编译后的类文件和其他资源。为了保护源代码不被轻易反编译和理解,开发者通常会使用混淆加密技术来增强代码的安全性。本文将深入探讨如何对Java jar包进行混淆加密,...
Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总 本文档将详细介绍 Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总。Java 是一种流行的编程语言,广泛应用于软件开发、Android 应用开发...
标题提到的"jarjar-方便Java打包工具,自定义修改jar包包名",这表明jarjar允许开发者对JAR内的类进行重命名,并且可以改变JAR本身的文件名。这种灵活性对于项目维护、依赖管理或解决类冲突问题非常有帮助。例如,你...
这里我们将深入探讨JAVA的打包机制,主要关注jar、tar和zip这三种常见的打包格式,以及如何处理它们的源码。 首先,`jar`文件是Java档案文件,它是Java平台特有的打包方式,用于收集多个类文件、相关的元数据和资源...
在Java编程中,将程序打包成JAR文件是常见的部署方式,这使得代码可以作为一个独立的可执行单元进行分发。然而,在打包包含数据库连接的Java应用程序时,可能会遇到一些问题,尤其是涉及到像MySQL这样的外部数据库。...
在Java开发过程中,将源码编译并打包成JAR(Java Archive)文件是一项常见的任务。JAR文件是Java平台特有的归档格式,它能够包含类文件、资源文件以及元数据,便于分发和执行。这里我们将详细讲解如何通过编写Java...