java生成jar包
Java编写的application程序是否可以终于形成一个类似于exe一样的可执行文件。难道就仅仅能用命令行执行?
通常有两种。一种是制作一个可运行的JAR文件包。然后就能够像.chm文档一样双击运行了;而还有一种是使用JET来进行编译。
可是JET是要用钱买的,并且据说JET也不是能把全部的Java程序都编译成运行文件,性能也要打些折扣。所以,使用制作可运行JAR 文件包的方法就是最佳选择了,何况它还能保持Java的跨平台特性。
以下就来看看什么是JAR文件包吧:
1. JAR文件包
JAR文件就是Java Archive File,顾名思意。它的应用是与Java息息相关的,是Java的一种文档格式。JAR文件很类似ZIP文件——准确的说。它就是ZIP文件,所以叫它文件包。
JAR文件与ZIP文件唯一的差别就是在JAR文件的内容中,包括了一个META-INF/MANIFEST.MF文件,这个文件是在生成JAR文件的时候自己主动创建的。
举个样例。假设我们具有例如以下文件夹结构的一些文件:
==
-- test
-- Test.class
把它压缩成ZIP文件test.zip,则这个ZIP文件的内部文件夹结构为:
test.zip
`-- test
`-- Test.class
假设我们使用JDK的jar命令把它打成JAR文件包test.jar,则这个JAR文件的内部文件夹结构为:
test.jar
|-- META-INF
| `-- MANIFEST.MF
`-- test
`--Test.class
2. 创建可运行的JAR文件包
制作一个可运行的JAR文件包来公布你的程序是JAR文件包最典型的使用方法。
Java程序是由若干个.class文件组成的。这些.class文件必须依据它们所属的包不同而分级分文件夹存放;执行前须要把全部用到的包的根文件夹指定给CLASSPATH环境变量或者java命令的-cp參数;执行时还要到控制台下去使用java命令来执行,假设须要直接双击执行必须写Windows的批处理文件(.bat)或者Linux的Shell程序。
因此,很多人说,Java是一种方便开发人员苦了用户的程序设计语言。
事实上不然,假设开发人员可以制作一个可运行的JAR文件包交给用户。那么用户使用起来就方便了。
在Windows下安装JRE(Java Runtime Environment)的时候。安装文件会将.jar文件映射给javaw.exe打开。
那么,对于一个可运行的JAR文件包,用户仅仅须要双击它就行运行程序了。和阅读.chm文档一样方便(.chm 文档默认是由hh.exe打开的)。那么,如今的关键,就是怎样来创建这个可运行的JAR文件包。
创建可运行的JAR文件包。须要使用带cvfm參数的jar命令,相同以上述test文件夹为例,命令例如以下:
jar cvfm test.jar manifest.mf test
这里test.jar和manifest.mf两个文件,各自是相应的參数f和m,其重头戏在manifest.mf。由于要创建可运行的JAR文件包。光靠指定一个manifest.mf文件是不够的,由于MANIFEST是JAR文件包的特征,可运行的JAR文件包和不可运行的JAR文件包都包括MANIFEST。关键在于可运行JAR文件包的MANIFEST。其内容包括了 Main-Class一项。这在MANIFEST中书写格式例如以下:
Main-Class: 可运行主类全名(包括包名)
比如,如果上例中的Test.class是属于test包的。并且是可运行的类(定义了 public static void main(String[]) 方法),那么这个manifest.mf能够编辑例如以下:
Main-Class: test.Test <回车>
这个manifest.mf能够放在不论什么位置,也能够是其他的文件名称,仅仅须要有Main-Class: test.Test 一行,且该行以一个回车符结束就可以。创建了manifest.mf文件之后。我们的文件夹结构变为:
==
|-- test
| `-- Test.class
`-- manifest.mf
这时候,须要到test文件夹的上级文件夹中去使用jar命令来创建JAR文件包。也就是在文件夹树中使用“==”表示的那个文件夹中,使用例如以下命令:
jar cvfm test.jar manifest.mf test
之后在“==”文件夹中创建了test.jar,这个test.jar就是执行的JAR文件包。执行时仅仅须要使用java -jar test.jar 命令就可以。
须要注意的是,创建的JAR文件包中须要包括完整的、与Java程序的包结构相应的文件夹结构。就像上例一样。而 Main-Class 指定的类,也必须是完整的、包括包路径的类名。如上例的test.Test。并且在没有打成JAR文件包之前能够使用java <类名> 来执行这个类。即在上例中 java test.Test 是能够正确执行的 (当然要在 CLASSPATH 正确的情况下)。
java生成jar包的更多相关文章
- java 生成jar包并保留注释
java 生成jar包并保留注释 CreationTime--2018年7月17日08点32分 Author:Marydon 1.选中java项目-->右键-->Export: 2.去 ...
- jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战
背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...
- Linux下编译java并生成jar包
下面是WordCount.java类 package com.ll; import java.io.IOException; import java.util.Iterator; import jav ...
- 【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。
使用Eclipse依赖生成jar包时,如果做配置,生成的jar包文件会全部生成在外面,这并不是我们需要的,下面我们一起来修改下配置,使生成的jar包符合我们的需求吧. 1.如果不做任何配置生成的jar ...
- Android studio module生成jar包,module中引用的第三方库没有被引用,导致java.lang.NoClassDefFoundError错误。
android studio 创建了一个Module生成jar包,这个module中有引用一些第三方的类库,比如 gson,volley等. 但是生成的jar包里,并没有将gson,volley等第三 ...
- java打jar包,引用其他.jar文件
大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口. 具体的方法是修改jar包内目录META-INF下的MANIF ...
- eclipse 下生成jar包
eclipse 下生成jar包 第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Exp ...
- [转]myeclipse 生成JAR包并引入第三方包
myeclipse 生成JAR包并引入第三方包 我用的是myeclipse8.0 首先用myeclipse生成JAR 一.生成JAR包 1.点选项目右键—>Export 2.Java—>J ...
- Eclipse生成Jar包方法
Eclipse生成jar包 第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Exp ...
随机推荐
- 点击按钮,实现两个td值互换
<body> <table id="table1"> <tr> <td>第一个单元格</td> <td>第二 ...
- linux学习笔记13--命令head和tail
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...
- nginx php-fpm启用慢日志slowlog
php-fpm慢日志slowlog设置可以让我们很好的看见哪些php进程速度太慢而导致的网站问题. 可以让我们方便的找到问题的所在. 代码如下 1 vi /data1/server/php-cgi/ ...
- Enable Authentication on MongoDB
1.Connect to the server using the mongo shell mongo mongodb://localhost:27017 2.Create the user admi ...
- JVM源码分析之Metaspace解密
概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所 ...
- .NET开发笔记--对config文件的操作(2)
1.前台代码 sys_channel_edit.aspx <tbody id="item_box"> <asp:Repeater ID="rptList ...
- mfc小工具开发之定时闹钟之---二十四小时时区和时间段
1.凌晨0:00-6:00时显示凌晨,上午6:00-12:00显示上午,中午12:00-14:00显示中午,下午14:00-显示下午,晚上18:00-24:00显示晚上 2. 早上:6-8:上午8-1 ...
- express搭建权限管理系统
express搭建权限管理系统 权限管理,是管理系统中的常见组件.通常需要定义资源,把资源调配给用户,通过判断用户是否有权限增删改查来实现. 初衷: 使用express开发过的项目大大小小加在一起也有 ...
- ChemDraw在苹果电脑上能不能用
很多ChemDraw 15.1 Pro用户都Windows操作系统用户,近年来随着苹果公司的影响力越来越大,使用苹果电脑的朋友越来越多.一些ChemDraw用户可能会使用苹果电脑,因此特别的关注在苹果 ...
- hdu 2485(最小费用最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2485 思路:题目的意思是删除最少的点使1,n的最短路大于k.将点转化为边,容量为1,费用为0,然后就是 ...