仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 658|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇如何制造自解压的jar文件

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:23:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
这是一篇形貌如何制造自解压jar文件的文章,作者经由过程本人编写的一个自解压程序,并把这个自解压程序和一个manifest文件一同到场原始的jar文件中,就制造出一个能够在各类撑持java的平台上运转的自解压的jar文件。
自解压文件
我们先来懂得一下自解压文件,在window下能够用自解压抑作工具如winzipself-Extractor来制造自解压文件,这些工具会把一个zip文件与解压程序打包在一同而发生一个新的可实行文件。然后只需运转这个可实行文件,就能够把zip文件中的内容解开。那为何要创立自解压jar文件呢,创立成自解压zip文件不就行了?我们应当注重到自解压jar文件能够在恣意撑持java的平台上解开并实行,比方,能够在linux下实行。创立jar自解压文件很复杂,只必要一个特别的JARmanifest文件、一个基于java的解压程序(这个程序是原作者写的)、包括基础文件的jar大概zip文件和任何jsdk的jar使用程序
manifest文件
要天生可实行jar文件,必要在META-INF目次下的manifest文件,文件名为:MANIFEST.MF,但在我们这里我们只必要在文件中指定在这个基于java的解压程序中包括main()的类的称号:Main-Class:ZipSelfExtractor
我们已把一个叫做jarmanifest的文件到场到这个技能的源程序包中。
解压程序
你能够用各类办法来完成这个解压程序,在我们这里利用了一个复杂间接的举措。起首,解压程序判别这个自解压jar文件的称号,有了这个文件名,解压程序利用解压尺度,把文件解开。详细的能够检察在源码包中的ZipSelfExtractor.java文件。
值得一提的是这里用了一个很奇妙的举措猎取jar文件的文件名,固然在命令行中呈现的这个文件的名字,但它并没有作为参数传进类的main()中,因而,这里利用了以下的代码来猎取文件名:
privateStringgetJarFileName()
  {
   myClassName=this.getClass().getName()+".class";
   URLurlJar=
     this.getClass().getClassLoader().getSystemResource(myClassName);
   StringurlStr=urlJar.toString();
   intfrom="jar:file:".length();
   intto=urlStr.indexOf("!/");
   returnurlStr.substring(from,to);
  }
请注重:getSystemResource()中利用了myClassName而不是ZipSelfExtractor.class作参数,这使得我们能够变动加压程序的名字而不必要修正代码。
接上去,我们来剖析取得这个jar文件的名字。起首,能够猎取指向包括正在运转类的文件,urlStr=urlJar.toString();有了这个url,把jar文件名往失落,剩下的就是我们想要的,上面是这个url的格局:
jar:file:/home/test/zipper.jar!/ZipSelfExtractor.class
有了文件名,就能够入手下手解压,具体的解压算法请人人本人看源码。
为了能够更便利有用,程序利用了图形界面,程序中利用了JFileChooser类能够选择要解压的方针目次。
最初程序还确保不把这两个文件:manifest文件和extractors.class(在我们这里是ZipSelfExtractor.class)文件也解出来,程序是用来解开原始的jar的内容,而这两个文件并属于jar原始内容。
<p>
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-20 23:42:57 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
若天明 该用户已被删除
板凳
发表于 2015-1-30 07:30:36 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-4 06:05:13 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
变相怪杰 该用户已被删除
5#
发表于 2015-2-7 07:01:22 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-20 23:39:34 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
简单生活 该用户已被删除
7#
发表于 2015-2-25 21:48:49 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
小魔女 该用户已被删除
8#
发表于 2015-3-6 02:38:50 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
柔情似水 该用户已被删除
9#
发表于 2015-3-12 18:51:08 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
活着的死人 该用户已被删除
10#
发表于 2015-3-13 12:10:54 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
海妖 该用户已被删除
11#
发表于 2015-3-20 01:40:51 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小女巫 该用户已被删除
12#
发表于 2015-4-8 19:28:08 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-23 11:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表