📄 jar 文件揭密.htm
字号:
-keypass jamespass -signedjar SSample.jar Sample.jar james
</CODE></PRE></TD></TR></TBODY></TABLE>
<P>这个命令用密码“jamesKeyStorePass”从名为“jamesKeyStore”的 keystore
中提出别名为“james”、密码为“jamespass”的密钥,并对 Sample.jar 文件签名、创建一个签名的 JAR --
SSample.jar。</P>
<P><CODE>jarsigner</CODE> 工具还可以验证一个签名的 JAR 文件,这种操作比签名 JAR
文件要简单得多,只需执行以下命令:</P>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc
border=1><TBODY>
<TR>
<TD><PRE><CODE>
jarsigner -verify SSample.jar
</CODE></PRE></TD></TR></TBODY></TABLE>
<P>如果签名的 JAR 文件没有被篡改过,那么 <CODE>jarsigner</CODE> 工具就会告诉您 JAR
通过验证了。否则,它会抛出一个 <CODE>SecurityException</CODE>, 表明哪些文件没有通过验证。</P>
<P>还可以用 <CODE>java.util.jar</CODE> 和<CODE> java.security</CODE> API
以编程方式签名 JAR(有关细节参阅<A
href="http://www-900.ibm.com/developerWorks/cn/java/j-jar/index.shtml#resources">参考资料</A>)。也可以使用像
Netscape Object Signing Tool 这样的工具。</P>
<P><A name=IDAUBXVB><SPAN class=atitle2>JAR 索引</SPAN></A><BR>如果一个应用程序或者
applet 捆绑到多个 JAR 文件中,那么类装载器就使用一个简单的线性搜索算法搜索类路径中的每一个元素,这使类装载器可能要下载并打开许多个
JAR 文件,直到找到所要的类或者资源。如果类装载器试图寻找一个不存在的资源,那么在应用程序或者 applet 中的所有 JAR
文件都会下载。对于大型的网络应用程序和 applet,这会导致启动缓慢、响应迟缓并浪费带宽。</P>
<P>从 JDK 1.3 以后,JAR 文件格式开始支持索引以优化网络应用程序中类的搜索过程,特别是 applet。JarIndex 机制收集在
applet 或者应用程序中定义的所有 JAR 文件的内容,并将这些信息存储到第一个 JAR 文件中的索引文件中。下载了第一个 JAR
文件后,applet 类装载器将使用收集的内容信息高效地装载 JAR 文件。这个目录信息存储在根 JAR 文件的 META-INF 目录中的一个名为
INDEX.LIST 的简单文本文件中。</P>
<P><A name=IDA3BXVB></A>创建一个 JarIndex<BR>可以通过在 <CODE>jar</CODE> 命令中指定
<CODE>-i</CODE> 选项创建一个 JarIndex。假设我们的目录结构如下图所示:</P>
<P><A name=IDAOCXVB><B>图 2. JarIndex</B></A><BR><IMG height=163
alt="JarIndex Demo" src="JAR 文件揭密_files/jarindex.gif" width=329></P>
<P>您将使用下述命令为 JarIndex_Main.jar、JarIndex_test.jar 和 JarIndex_test1.jar
创建一个索引文件:</P>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc
border=1><TBODY>
<TR>
<TD><PRE><CODE>
jar -i JarIndex_Main.jar JarIndex_test.jar SampleDir/JarIndex_test1.jar
</CODE></PRE></TD></TR></TBODY></TABLE>
<P>INDEX.LIST 文件的格式很简单,包含每个已索引的 JAR 文件中包含的包或者类的名字,如清单 2 所示:</P><A
name=IDA3CXVB><B>清单 2. JarIndex INDEX.LIST 文件示例</B></A><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc
border=1><TBODY>
<TR>
<TD><PRE><CODE>
JarIndex-Version: 1.0
JarIndex_Main.jar
sp
JarIndex_test.jar
Sample
SampleDir/JarIndex_test1.jar
org
org/apache
org/apache/xerces
org/apache/xerces/framework
org/apache/xerces/framework/xml4j
</CODE></PRE></TD></TR></TBODY></TABLE>
<P><A name=IDAFDXVB><SPAN class=atitle2>结束语</SPAN></A> <BR>JAR
格式远远超出了一种压缩格式,它有许多可以改进效率、安全性和组织 Java 应用程序的功能。因为这些功能已经建立在核心平台 -- 包括编译器和类装载器
-- 中了,所以开发人员可以利用 JAR 文件格式的能力简化和改进开发和部署过程。.</P>
<P><A name=resources><SPAN class=atitle2>参考资料</SPAN></A>
<UL>
<LI>参阅 <A
href="http://java.sun.com/docs/books/tutorial/jar/basics/index.html">jar</A>
实用程序的命令行选项的文档。<BR><BR>
<LI>Raffi Krikorian 在 ONJava 上发表的文章提供了有关 <A
href="http://www.onjava.com/pub/a/onjava/2001/04/12/signing_jar.html?page=1">programmatically
signing a JAR file</A> 的帮助。<BR><BR>
<LI>这篇关于<A
href="http://robocode.alphaworks.ibm.com/docs/jdk1.3/tooldocs/solaris/jar.html">Java
Archive Tool</A> 的文档解释了创建和操作 JAR 文件可以使用的选项。<BR><BR>
<LI>文章“<A
href="http://www-900.ibm.com/developerWorks/cn/java/j-webstart/">Java
Web Start</A>”(<I>developerWorks</I>,2001 年 9
月)描述了如何使用这种技术,以便允许应用程序可以指定所需的 JAR 文件并动态下载它们。<BR><BR>
<LI>有关 J2EE 服务器(比如 IBM WebSphere Application Server)使用 JAR
文件格式的不同方式,请参阅“<A
href="http://www7b.software.ibm.com/wsdd/WASInfoCenter/infocenter/wasa_content/003401.html">What
are Java Archive (JAR) files?</A>”<BR><BR>
<LI>JAR 格式是 WAR (Web Archive) 格式的基础,WAR用于在 J2EE 容器中部署 Servlet 和 JSP
应用程序。更多内容请参阅“<A
href="http://www-1.ibm.com/servers/eserver/iseries/software/websphere/wsappserver/docs/as400v35/help/000801.html">What
are WAR files?</A>”。<BR><BR>
<LI>JAR 格式也是 EAR (Enterprise Archive) 格式的基础,EAR 用于在 J2EE 容器中部署
EJB。更多内容请参阅“<A
href="http://www7b.software.ibm.com/wsdd/WASInfoCenter/infocenter/wasa_content/000101.html">What
are Enterprise Archive (EAR) files?</A>”。<BR><BR>
<LI>在 <A
href="http://www-900.ibm.com/developerWorks/cn/java/"><I>developerWorks</I>
Java 技术专区</A>上可以找到数百篇关于 Java 编程的各个方面的文章。<BR><BR></LI></UL>
<P></P><!-- AUTHOR BIOS--><!-- Make author heading singular or plural as needed-->
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><A name=author1></A><SPAN class=atitle2>关于作者</SPAN><BR><IMG
height=80 alt="Photo of Pagadala Suresh"
src="JAR 文件揭密_files/p-suresh.jpg" width=64 align=left
border=0>Pagadala J. Suresh 是 IBM Global Services India
的软件工程师。他擅长的领域包括 Java 技术、WebSphere Application Server 和 WebSphere
Studio Application Developer (WSAD)、Ariba Buyer。他参与了 WebSphere 的 IBM
Redbook 项目。可以通过 <A
href="mailto:pjsuresh@in.ibm.com">pjsuresh@in.ibm.com</A> 与 Pagadala
联系。</TD></TR>
<TR>
<TD>
<P><A name=author2><BR></A><IMG height=80
alt="Photo of Palaniyappan Thiagarajan"
src="JAR 文件揭密_files/p-thiagarajan.jpg" width=64 align=left
border=0>Palaniyappan Thiagarajan 是位于印度班加罗尔的 IBM Global Services
India 的软件工程师。他是IBM 认证的 IBM WebSphere Application Server V3.5 和 IBM
DB2 UDB V7.1 Family Fundamentals 专家。可以通过 <A
href="mailto:tpalaniy@in.ibm.com">tpalaniy@in.ibm.com</A> 与
Palaniyappan 联系。</P></TD></TR></TBODY></TABLE></TD>
<TD width=10><IMG height=1 alt="" src="JAR 文件揭密_files/c.gif" width=10
border=0></TD></TR></TBODY></TABLE><!-- END PAPER BODY--><BR clear=all><IMG
height=10 alt="" src="JAR 文件揭密_files/c.gif" width=100 border=0><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right width="100%"><A
href="http://www-900.ibm.com/developerWorks/cn/java/j-jar/index.shtml#top">到页首</A></TD>
<TD width=5><IMG height=1 alt="" src="JAR 文件揭密_files/c.gif" width=5
border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#000000 colSpan=2><IMG height=1 alt=""
src="JAR 文件揭密_files/c.gif" width=100 border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff colSpan=2><IMG height=8 alt=""
src="JAR 文件揭密_files/c.gif" width=100 border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=10 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD>
<FORM name=getURL
action=/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument
method=post><INPUT type=hidden value="JAR 文件揭密" name=ArticleTitle> <INPUT
type=hidden name=url>
<SCRIPT language=javascript>getURL();</SCRIPT>
<INPUT type=hidden value=Java name=Zone> <INPUT type=hidden
value=/developerWorks/cn/thankyou/feedback-java.html name=RedirectURL> <A
name=rating><B>您对这篇文章的看法如何?</B></A>
<TABLE cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD colSpan=5><IMG height=8 alt="" src="JAR 文件揭密_files/c.gif"
width=100 border=0></TD></TR>
<TR vAlign=top>
<TD width="16%"><INPUT type=radio value=5 name=Rating>真棒!(5)</TD>
<TD width="20%"><INPUT type=radio value=4 name=Rating>好材料 (4)</TD>
<TD width="24%"><INPUT type=radio value=3 name=Rating>一般;尚可 (3)</TD>
<TD width="22%"><INPUT type=radio value=2 name=Rating>需提高 (2)</TD>
<TD width="18%"><INPUT type=radio value=1 name=Rating>太差!
(1)</TD></TR></TBODY></TABLE><BR><B>建议?</B><BR><TEXTAREA name=Comments rows=5 wrap=virtual cols=60></TEXTAREA><BR><BR><INPUT type=submit value=提交反馈意见></FORM></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff><IMG height=8 alt="" src="JAR 文件揭密_files/c.gif"
width=100 border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right>(c) Copyright IBM Corp. 2001, (c) Copyright IBM China
2001, All Right Reserved</TD></TR>
<TR vAlign=top>
<TD class=bbg height=21> <A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&origin=dwhead">关于
IBM</A><SPAN class=divider> | </SPAN><A
class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/privacy/index.shtml&origin=dwhead">隐私条约</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/legal/index.shtml&origin=dwhead">使用条款</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/contact/index.shtml&origin=dwhead">联系
IBM</A></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 src="JAR 文件揭密_files/stats.js"
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt=""
src="F:\ziliao\java\java资料\JAR 文件揭密_files\c(1).gif" width=1 border=0></NOSCRIPT>
</A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -