- 浏览: 148899 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (110)
- CoreJava (18)
- 待解决 (1)
- 数据结构 (3)
- 科普 (2)
- 网站 (1)
- DataBase (8)
- Access (1)
- Asp (1)
- JSP (1)
- 操作系统 (8)
- Tech (1)
- Linux (11)
- Career (5)
- MongoDB (1)
- Embedded (1)
- JavaScript (1)
- UltraIso (1)
- Linux命令 (1)
- DesignPattern (1)
- Ruby (13)
- Vim (1)
- 自考 (2)
- Github (5)
- zrProject (1)
- Emacs (4)
- Math (3)
- Ajax (1)
- 没看懂 (1)
- HTML (1)
- Philosophy (1)
- 软件 (1)
- 面试 (1)
- 考试报名 (3)
- Regex (1)
- 日语 (1)
- 生活 (1)
最新评论
其实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, 最后点击"确定"即可完成。
发表评论
-
利用反射实现ORM
2012-03-28 13:37 987http://royzhou1985.iteye.com ... -
Eclipse插件安装
2012-03-28 09:29 908装载:http://gooss.org/are-two- ... -
Date & Calendar 类的使用
2012-03-27 14:19 665Java 语言的Calendar(日历),Date(日期 ... -
Java文件流 编码问题 - 读取文件时指定字符编码
2012-03-25 22:04 11537折磨了一天的问题,终于在黄昏的时候解决了,现在一吐为 ... -
JavaBean - Bound属性
2012-02-04 15:54 10004.4.3 Bound属性 Bound属性表示当该种 ... -
怎样在程序里获得一个空指针?
2012-01-28 15:56 6706.2 怎样在程序里获 ... -
制作可执行的Jar包
2012-01-22 16:35 737通常有两种,一种是制 ... -
Thread Local
2012-01-22 10:28 754What is Thread Local? Threa ... -
Jni介绍
2011-10-26 19:33 590http://baike.baidu.com/view/127 ... -
获取外网IP地址
2011-10-26 18:47 905访问 http://checkip.dyndns.org/ -
this 与 getSource() 细节
2011-10-14 19:33 702一个对象实例化之后,在它的方法体中出现的this就是指自身。a ... -
static变量生存周期
2011-10-13 22:38 934标准规定static变量保证在第一次使用前初始化,但是并不保证 ... -
String 引用类型与基本类型区别
2011-10-13 22:20 810String a="A"; Stri ... -
为什么会有serialVersionUID
2011-10-13 21:17 623java文件中为什么会有s ... -
抽象类与接口的区别
2011-10-09 11:30 550首先,我们来看一下抽象类的概念,java编程思想中说“万物皆对 ... -
transient用法
2011-09-19 11:16 805Java的serialization提供了一种持久化对象实例的 ... -
例1.1 TextFileTest
2011-07-06 23:19 668package SectionIO; import java ...
相关推荐
Eclipse怎么打jar包(可运行的jar包) 教你一步一步,学会怎么打jar包,内含详细图文教程。
### Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中 #### 背景介绍 随着微服务架构的流行,Spring Boot 成为了开发微服务应用时首选的技术栈之一。它简化了传统的Java Web应用程序的开发...
"打Jar包小工具"是一个便捷的解决方案,旨在简化这个过程。这个工具包含两个核心文件:`cmd.bat` 和 `package.txt`。 `cmd.bat` 是一个批处理脚本,它通常包含了运行Java的jar打包命令,如`jar`命令。在Windows环境...
Java工程打JAR包工具是Java开发者常用的工具之一,它能将Java源代码编译、打包成可执行的JAR(Java Archive)文件。JAR文件是Java平台特有的归档格式,它允许将多个类文件和其他资源组合到一个单一的文件中,便于...
该批处理把d盘下com文件夹下的所有东西打成jar包,并放在d盘。
在创建JAR包之前,通常需要一个名为MANIFEST.MF的文件,指明JAR包的主类(即运行时的入口点)。例如: ``` Manifest-Version: 1.0 Main-Class: com.example.MyMainClass ``` 这里的`com.example.MyMainClass`...
Java打Jar包是Java开发过程中常见的一项操作,它将多个类文件、资源文件等打包成一个可执行的JAR(Java Archive)文件,方便分发、部署和运行。本篇文章将详细阐述Java打Jar包的方法,并通过实例进行演示。 1. **...
Java 项目打 Jar 包方法详解 在 Java 项目开发中,通常需要将项目打包成 Jar 文件,以便于部署和分发。本文将详细介绍 Java 项目打 Jar 包的方法。 一、准备工作 在开始打 Jar 包之前,需要确保 Java 项目已经...
如何打jar包,成为可执行jar。可以运行。
工作需要第一次使用spring boot 开发,打jar包时先是直接导出 runnable jar ,后来发现运行不了,查了半天发现打包方式有问题,写下来与大家分享
IDEA对使用了第三方依赖jar包的非Maven项目打jar包的问题 本文主要介绍了IDEA对使用了第三方依赖jar包的非Maven项目打jar包的问题,通过详细的图文详解,帮助大家更好地理解和解决这个问题。 知识点1:IDEA打jar包...
但是,在打包时,由于scope=system,默认并不会将Jar包打进war包中。所有我们需要通过插件进行打包。我们可以在pom.xml文件中添加以下配置,以便将本地Jar包打包进War包中: ``` <groupId>org.apache.maven....
当前pom.xml中详细的记录了将maven项目打成可运行jar包的完整代码,使用maven的插件maven-assembly-plugin,同时将所有依赖打到jar包中,亲测可用。
android源码打jar包脚本
lib.zip内容:core-renderer.jar iText-2.0.8.jar iTextAsian.jar iTextAsianCmaps.jar jsoup-1.8.1.jar PDFRenderer.jar
支持idea maven项目自动打jar包工具类,方便快捷!!!
基于servlet3.0的jsp打jar包示例
"Idea+maven打jar包的两种方式" Idea+maven打jar包是开发者在使用Idea和Maven时经常遇到的一个问题,本文将详细介绍Idea+maven打jar包的两种方式。这些方式可以帮助开发者快速地将项目打包成jar包,并在Maven仓库中...
Java打jar包是Java开发中常见的操作,用于将编译后的字节码文件打包成一个可执行的独立文件。本文将详细介绍三种不同类型的jar包的创建方法。 1. 制作只包含字节码文件的jar包 这种jar包是最基础的形式,仅包含...