|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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这些工具的出来。 |
|