⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 玩转java的classpath [三].htm

📁 写给JSP初级程序员的书
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://eps.www85.cn4e.com/java/article/devshow.asp?id=131 -->
<HTML><HEAD><title>csdn_玩转Java的CLASSPATH [三]</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>TD {
	FONT-FAMILY: "Verdana", "Arial", "宋体"; FONT-SIZE: 9pt
}
A {
	COLOR: #660000; TEXT-DECORATION: underline
}
A:hover {
	COLOR: #660000; TEXT-DECORATION: none
}
.line {
	LINE-HEIGHT: 14pt
}
</STYLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff text=#000000>
<table>
  <TBODY>
  <TR>
    <TD height=21>
      <DIV align=center><B><FONT size=3>玩转Java的CLASSPATH [三] 
      <BR><FONT size=2> </FONT></FONT></FONT>
      <HR align=center color=#cccccc noShade SIZE=1>
      </DIV></TD></TR>
  <TR>
    <TD class=line><FONT 
      color=#333300>玩转Java的CLASSPATH&nbsp;[三]<BR><BR><BR>作者:仙人掌工作室&nbsp;/&nbsp;eNet技术&nbsp;<BR><BR>四、JWhich的工作过程&nbsp;<BR>  要精确地测定classpath中哪一个类先被装载,你必须深入到类装载器的思考方法。事实上,具体实现的时候并没有听起来这么复杂——你只需直接询问类装载器就可以了!&nbsp;<BR><BR>1:&nbsp;public&nbsp;class&nbsp;JWhich&nbsp;{&nbsp;<BR>2:&nbsp;<BR>3:&nbsp;/**&nbsp;<BR>4:&nbsp;*&nbsp;根据当前的classpath设置,&nbsp;<BR>5:&nbsp;*&nbsp;显示出包含指定类的类文件所在&nbsp;<BR>6:&nbsp;*&nbsp;位置的绝对路径&nbsp;<BR>7:&nbsp;*&nbsp;<BR>8:&nbsp;*&nbsp;@param&nbsp;className&nbsp;&lt;类的名字&gt;&nbsp;<BR>9:&nbsp;*/&nbsp;<BR>10:&nbsp;public&nbsp;static&nbsp;void&nbsp;which(String&nbsp;className)&nbsp;{&nbsp;<BR>11:&nbsp;<BR>12:&nbsp;if&nbsp;(!className.startsWith("/"))&nbsp;{&nbsp;<BR>13:&nbsp;className&nbsp;=&nbsp;"/"&nbsp;+&nbsp;className;&nbsp;<BR>14:&nbsp;}&nbsp;<BR>15:&nbsp;className&nbsp;=&nbsp;className.replace('.',&nbsp;'/');&nbsp;<BR>16:&nbsp;className&nbsp;=&nbsp;className&nbsp;+&nbsp;".class";&nbsp;<BR>17:&nbsp;<BR>18:&nbsp;java.net.URL&nbsp;classUrl&nbsp;=&nbsp;<BR>19:&nbsp;new&nbsp;JWhich().getClass().getResource(className);&nbsp;<BR>20:&nbsp;<BR>21:&nbsp;if&nbsp;(classUrl&nbsp;!=&nbsp;null)&nbsp;{&nbsp;<BR>22:&nbsp;System.out.println("\nClass&nbsp;'"&nbsp;+&nbsp;className&nbsp;+&nbsp;<BR>23:&nbsp;"'&nbsp;found&nbsp;in&nbsp;\n'"&nbsp;+&nbsp;classUrl.getFile()&nbsp;+&nbsp;"'");&nbsp;<BR>24:&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>25:&nbsp;System.out.println("\nClass&nbsp;'"&nbsp;+&nbsp;className&nbsp;+&nbsp;<BR>26:&nbsp;"'&nbsp;not&nbsp;found&nbsp;in&nbsp;\n'"&nbsp;+&nbsp;<BR>27:&nbsp;System.getProperty("java.class.path")&nbsp;+&nbsp;"'");&nbsp;<BR>28:&nbsp;}&nbsp;<BR>29:&nbsp;}&nbsp;<BR>30:&nbsp;<BR>31:&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{&nbsp;<BR>32:&nbsp;if&nbsp;(args.length&nbsp;&gt;&nbsp;0)&nbsp;{&nbsp;<BR>33:&nbsp;JWhich.which(args[0]);&nbsp;<BR>34:&nbsp;}&nbsp;else&nbsp;{&nbsp;<BR>35:&nbsp;System.err.println("Usage:&nbsp;java&nbsp;JWhich&nbsp;&lt;classname&gt;");&nbsp;<BR>36:&nbsp;}&nbsp;<BR>37:&nbsp;}&nbsp;<BR>38:&nbsp;}&nbsp;<BR><BR>  首先,你必须稍微调整一下类的名字以便类装载器能够接受(12-16行)。在类的名字前面加上一个“/”表示要求类装载器对classpath中的类名字进行逐字精确匹配,而不是尝试隐含地加上调用类的包名字前缀。把所有“.”转换为“/”的目的是,按照类装载器的要求,把类名字格式化成一个合法的URL资源名。&nbsp;<BR><BR>  接下来,程序向类装载器查询资源,这个资源的名字必须和经过适当格式化的类名字匹配(18-19行)。每一个Class对象维护着一个对装载它的ClassLoader对象的引用,所以这里是向装载JWhich类的类装载器查询。Class.getResource()方法实际上委托装入该类的类装载器,返回一个用于读取类文件资源的URL;或者,当指定的类名字不能在当前的classpath中找到时,Class.getResource()方法返回null。&nbsp;<BR><BR><BR></FONT></TD></TR>
  <TR>
    <TD height=5>
      <HR align=center color=#cccccc noShade SIZE=1>
    </TD></TR></TBODY></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -