问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java程序怎样可以打成jar包

发布网友 发布时间:2022-05-14 07:35

我来回答

1个回答

热心网友 时间:2023-10-09 23:54

一、Java程序的打包基本上分两部分,一部分是一般程序的打包,另一部分就是特殊的插件打包了,我们只注重一般程序的打包,插件的打包方法我们不研究,毕竟没几个人搞插件开发。二、jar运行的时候,它在怎么工作呢?了解这个是很重要的,知道这个以后,你就明白为什么我们需要这个文件、需要哪个文件,所以要仔细看这部分。简单的说:双击jar文件->jar会读取manifest.mf(或者以mf为后缀的)这个打包清单->清单里有主类名和运行需要的库->根据这些信息jar就可以开始运行里面的java程序了->当有和系统进行交互的时候(比如swt需要系统的界面窗口信息,如果没有和系统进行信息交互则不必包含系统的库文件,其实那个时候你也没有需要的库文件),我们就要读取系统的库文件,调用系统的东西,所以我们要把系统的库函数连接文件(***.dll)包括进来。这些就是jar的工作内部过程,那么下面我们就满足它的要求,创建它。三、立即开工1、第一步,创建好你的swt程序,我们以这个为例,我们不避讳任何为题,因为这个包含的比较全面,基本问题都遇到了,所以你要先创建一个简单的swt程序,例如一个简单的对话框Swttest.java。2、下面要做第二步,写好你的配置文件,取名为manifest.mf(名字随便,后缀为mf即可)具体格式: Manifest-Version: 1.0Main-Class: SwttestClass-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文件全部打包进来就可以了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山外面包一个病旁是什么字 我的笔记本电脑显示电源的灯一直在绿色和橘红色之间闪烁,这是怎么回事... 笔记本电脑3个灯笔记本电脑这几个指示灯分别是啥意思 ...我的y470.第3个指示灯是橘红色的,开不了机,不知道怎么了?就开不了... QQ空间皮肤的代码是怎么放进去的啊. 为什么我在地址栏中输入皮肤代码按回车键,但一按空间就没有了 请教个问题哈~关于qq空间背景代码的,我在IE栏里输了代码,为啥每次弹出 ... win10删除多余的输入法 win10怎么删除多余的输入法 win10输入法怎么删除 win10输入法删除方法 如何做出爽口不腻、口味纯正的孟和尚粉肠? 如何把java的class文件生成jar包 函数的java程序如何生成可执行的jar包 塑料老化粘手如何处理? 我用的是迅雷,以前种子文件,在网页上可以直接打开下载。可现在一定要先把种子下载到电脑中, 怎么用浏览器能直接打开种子下载 为什么叫win7芒果系统,还有别的系统吗? 苹果6手机uc浏览器下载好种子点击打开方式使用迅雷,迅雷无法打开种子,怎么回事? 安卓系统 和 芒果系统 哪个更好? 100G的流量,15G就开始限速了,剩下的80多个G你们吃了? 芒果系统怎样?有什么优点? 芒果系统怎么样 芒果系统怎么样? 芒果系统怎么样好用吗和安卓比 芒果系统是怎么样的一回事 什么是芒果系统? 芒果系统的手机有哪些? 钱枫事件给芒果台造成了怎样的影响? 道外二十道街江上一品去群力群力新苑西区开车怎么走? 哈尔滨群力西区昆仑御二期是哪个学校? 哈尔滨2011年经济适用住房什么时间开始摇号? 用JAVA代码怎么生成JAR,请详细点我是新手。最好是有图片解释的。谢谢谢... 如何将java类转换成UDF中的jar包 这三个特殊的符号怎么打。。就是这个人说的特殊文字后面的所有符号,还有那个三个点的省略号。。怎么用电 华为荣耀4c开机时显示灯闪烁亮红灯,开不开机? 荣耀4C无限重启不能开机 华为荣耀4c冲不上电,也开不开机? 几年前国外拍的豪车视频怎么发朋友圈 玛莎拉蒂飙车严重超速并拍视频发朋友圈炫耀,警方对其进行了什么处罚? 微信里一个人,买车了好像,在朋友圈发了小视频,让别人知道也就得了,还时不时每天都恨不得发几次,真是 微信公众号分享的文章,只要打开,下方就有广告,有时广告弹出导致文章打不开,而且广告上写的赞助商链接 请问30岁女的乳腺增生,乳腺导管扩张,肿块怎么治啊?有图有报告 乳腺疾病钼靶X线诊断图谱的目录 乳腺导管原位癌全切后怎么治疗 乳导管轻度扩张,乳腺增生 我母亲乳腺导管瘤诊断结果,我看不懂,大神帮我能帮我解释下么? 如何区分乳腺钙化的良恶性?有哪些治疗方法? 乳腺溢液可不做导管镜检查吗?可用涂片、彩超和核磁共振出诊断结果吗? 乳腺性浸润性导管癌与乳腺癌哪个严重 请问乳腺浸润性导管癌(3+3+3=8分,*)是什么级别?还有下图能有什么意见? 右侧乳腺导管内乳头状等回声(乳头状瘤?)【乳腺增生】