﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-活到老，学到老-随笔分类-Jvm,Java Core</title><link>http://www.blogjava.net/simonshen/category/43996.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 22 Feb 2010 12:38:19 GMT</lastBuildDate><pubDate>Mon, 22 Feb 2010 12:38:19 GMT</pubDate><ttl>60</ttl><item><title>java Class文件解析实例</title><link>http://www.blogjava.net/simonshen/archive/2010/02/22/311566.html</link><dc:creator>simon.shen</dc:creator><author>simon.shen</author><pubDate>Mon, 22 Feb 2010 11:30:00 GMT</pubDate><guid>http://www.blogjava.net/simonshen/archive/2010/02/22/311566.html</guid><wfw:comment>http://www.blogjava.net/simonshen/comments/311566.html</wfw:comment><comments>http://www.blogjava.net/simonshen/archive/2010/02/22/311566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simonshen/comments/commentRss/311566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simonshen/services/trackbacks/311566.html</trackback:ping><description><![CDATA[<span style="font-size: 18pt"><span style="font-size: 12pt">其实网上已经有很多java Class文件的解析实例的文章，写这篇博客，只是为了自己仔仔细细的按照jvm spec看一边，别无其他。<br />
<br />
先上class文件的格式。<code></code></span></span><code><br />
</code>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">ClassFile&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u4&nbsp;magic;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;minor_version;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;major_version;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;constant_pool_count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cp_info&nbsp;constant_pool[constant_pool_count</span><span style="color: #000000">-</span><span style="color: #000000">1</span></span></span><span style="color: #000000"><span style="font-size: 18pt"><span style="font-size: 12pt">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;access_flags;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;this_class;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;super_class;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;interfaces_count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;interfaces[interfaces_count];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;fields_count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_info&nbsp;fields[fields_count];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;methods_count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method_info&nbsp;methods[methods_count];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u2&nbsp;attributes_count;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attribute_info&nbsp;attributes[attributes_count];<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></span></span></div>
<br />
<span style="font-size: 18pt"><span style="font-size: 12pt"><code>其中，u2代表2个字节的无符号整数。u4代表4个字节的无符号整数，其他如</code><code>cp_info</code>、</span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><code>field_info<br />
</code>是一些结构数据，接下去会讲。<br />
这次要解析的是一个非常简单的类：TJ.java，代码如下：<br />
</span></span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;TJ<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;f1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m1(</span><span style="color: #0000ff">int</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;i){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">+</span><span style="color: #000000">1</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;m2(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span><br />
</span></span></div>
<pre><span style="font-size: 18pt"><span style="font-size: 12pt">使用jdk1.6编译，产生的二进制类文件如下：<br />
<br />
</span></span></pre>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">CA&nbsp;FE&nbsp;BA&nbsp;BE&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">32</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">&nbsp;0A&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">09</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">07</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">14</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">07</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">15</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">66</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">31</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">49</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0D&nbsp;</span><span style="color: #000000">43</span><span style="color: #000000">&nbsp;6F&nbsp;6E&nbsp;</span><span style="color: #000000">73</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">74</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;6E&nbsp;</span><span style="color: #000000">74</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">56</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">61</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">6C&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">75</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;3C&nbsp;</span><span style="color: #000000">69</span><span style="color: #000000">&nbsp;6E&nbsp;</span><span style="color: #000000">69</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">74</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">3E&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">28</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">56</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">43</span><span style="color: #000000">&nbsp;6F&nbsp;</span><span style="color: #000000">64</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">0F&nbsp;4C&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">69</span><span style="color: #000000">&nbsp;6E&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;4E&nbsp;</span><span style="color: #000000">75</span><span style="color: #000000">&nbsp;6D&nbsp;</span><span style="color: #000000">62</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">72</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">54</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">62</span><span style="color: #000000">&nbsp;6C&nbsp;</span><span style="color: #000000">65</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;6D&nbsp;</span><span style="color: #000000">31</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">28</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">49</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">49</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;6D<br />
</span><span style="color: #000000">32</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0A&nbsp;</span><span style="color: #000000">53</span><span style="color: #000000">&nbsp;6F&nbsp;</span><span style="color: #000000">75</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">72</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">63</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">46</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">69</span><span style="color: #000000">&nbsp;6C&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">07</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">54</span><span style="color: #000000">&nbsp;4A&nbsp;2E&nbsp;6A&nbsp;</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">76</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;0C&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">09</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0A&nbsp;0C&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">05</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">54</span><span style="color: #000000">&nbsp;4A&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;6A&nbsp;</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">76</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">61</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;2F&nbsp;6C<br />
</span><span style="color: #000000">61</span><span style="color: #000000">&nbsp;6E&nbsp;</span><span style="color: #000000">67</span><span style="color: #000000">&nbsp;2F&nbsp;4F&nbsp;</span><span style="color: #000000">62</span><span style="color: #000000">&nbsp;6A&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">63</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">74</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">21</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">05</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">07</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">08</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">09</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0A&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;0B<br />
</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">26</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0A&nbsp;2A&nbsp;B7&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">2A&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">05</span><span style="color: #000000">&nbsp;B5&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;B1&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0C&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;0A<br />
</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">03</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0D&nbsp;</span><span style="color: #000000">00</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">&nbsp;0E<br />
</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0B&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;1C&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">04</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">1B&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;AC&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0C&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0F&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0A&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0B&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">19</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;B1&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
<span style="font-size: 18pt"><span style="font-size: 12pt">0C&nbsp;</span></span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">06</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;0B&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">01</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span></span></span><span style="color: #000000"><br />
</span><span style="font-size: 18pt"><span style="font-size: 12pt"><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">02</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">11</span></span></span></div>
<pre><span style="font-size: 18pt"><span style="font-size: 12pt">下面对照上面的格式结构一点点的解析。<br />
CA FE BA BE：头四个字节是魔数，表示这是java class文件。<br />
00 00：次版本为0。<br />
00 32：主版本0x32，表示jdk1.6编译的。Jdk1.5为0x31，jdk1.4为0x30。<br />
00 16：常量池的入口（entry）数量。包括自己本身（这里很奇怪），所以接下来有21项的常量池入口。<br />

我会在每个常量池项的前面表上索引。常量池的第一个字节表示类型。具体类型对照表如下：<br />
</span></span></pre>
<table border="1">
    <tbody>
        <tr>
            <th><strong><em><span style="font-size: 18pt"><span style="font-size: 12pt">Constant Type </span></span></em></strong></th>
            <th><strong><em><span style="font-size: 18pt"><span style="font-size: 12pt">Value </span></span></em></strong></th>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Class</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>7</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Fieldref</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>9</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Methodref</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>10</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_InterfaceMethodref</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>11</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_String</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>8</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Integer</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>3</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Float</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>4</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Long</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>5</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Double</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>6</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_NameAndType</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>12</code> </span></span></td>
        </tr>
        <tr>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Utf8</code> </span></span></td>
            <td><span style="font-size: 18pt"><span style="font-size: 12pt">1</span></span></td>
        </tr>
    </tbody>
</table>
<pre><span style="font-size: 18pt"><span style="font-size: 12pt">0A 00 04 00 12：<span style="color: red">【1】</span>，第一个字节为10，所以是CONSTANT_Methodref，它的结构如下：<br />
CONSTANT_Methodref_info {<br />
<br />
u1 tag;<br />
<br />
u2 class_index;<br />
<br />
u2 name_and_type_index;<br />
<br />
}<br />
<br />
所以，class_index=4，name_and_type_index=12,这两个代表常量池第4项和第12项。<br />
<br />
09 00 03 00 13：<span style="color: red">【2】</span> 这是一个CONSTANT_Fieldref，他的结构和上面的类似class_index=3，name_and_type_index=13<br />
<br />
07 00 14：<span style="color: red">【3】</span>这个是CONSTANT_Class，它的结构如下：<br />
<br />
</span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><code>CONSTANT_Class_info {<br />
<br />
</code>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><code> u1 tag;<br />
<br />
</code>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><code><span style="font-size: 18pt"><span style="font-size: 12pt"> u2 name_index;<br />
<br />
</span></span></code><a style="background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&file=anchor.gif); width: 20px; text-indent: 20px; background-repeat: no-repeat; height: 20px" name="1226"></a><span style="font-size: 18pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 18pt"><span style="font-size: 12pt"><code>}<br />
</code><br />
name_index为20，指向的是一个utf8的字节码，即TJ，这个后面会看到。<br />
<br />
07 00 15: <span style="color: red">【4】 也是一个</span>CONSTANT_Class，name_index为21，即java/lang/Object<br />
<br />
01 00 02 66 31: <span style="color: red">【5】</span>CONSTANT_Utf8，结构如下：<br />
<br />
CONSTANT_Utf8_info {<br />
<br />
u1 tag;<br />
<br />
u2 length;<br />
<br />
u1 bytes[length];<br />
<br />
}<br />
<br />
最后两个字节代表字符串&#8220;f1&#8221;的utf-8字节码。<br />
<br />
01 00 01 49<span style="color: red">：【6】</span>字符串I<br />
<br />
01 00 0D 43 6F 6E 73 74 61 6E 74 56 61 6C 75 65 <span style="color: red">：【7】</span>字符串ConstantValue<br />
<br />
03 00 00 00 02<span style="color: red">：【8】</span>CONSTANT_Integer，整数值2 <br />
<br />
01 00 06 3C 69 6E 69 74 3E：【9】字符串&lt;init&gt;<br />
<br />
01 00 03 28 29 56：【10】字符串()V<br />
<br />
01 00 04 43 6F 64 65：【11】字符串code<br />
<br />
01 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65：【12】字符串LineNumberTable<br />
<br />
01 00 02 6D 31：【13】字符串m1<br />
<br />
01 00 04 28 49 29 49 ：【14】字符串(I)I，表示一个整数参数且返回整数的方法。<br />
<br />
01 00 02 6D 32 ：【15】字符串m2<br />
<br />
01 00 0A 53 6F 75 72 63 65 46 69 6C 65 ：【16】字符串SourceFile<br />
<br />
01 00 07 54 4A 2E 6A 61 76 61：【17】字符串TJ.java<br />
<br />
0C 00 09 00 0A：【18】CONSTANT_NameAndType，结构如下：<br />
<br />
CONSTANT_NameAndType_info {<br />
<br />
u1 tag;<br />
<br />
u2 name_index;<br />
<br />
u2 descriptor_index;<br />
<br />
}<br />
name_index=9，代表方法&lt;init&gt;，descriptor_index=10，()V，代表无参且返回void的方法。<br />
<br />
<br />
0C 00 05 00 06：【19】结构同上，name_index=5，即f1，descriptor_index=6，即整数。<br />
<br />
01 00 02 54 4A ：【20】字符串TJ<br />
<br />
01 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74：【21】字符串java/lang/Object</span></span></pre>
<p><span style="font-size: 18pt"><span style="font-size: 12pt">到此，常量池结束。<br />
00 21：类的描述符为public。<br />
00 03 ：this class为常量池第三个，TJ，即这个类的名字为TJ<br />
00 04：super class为常量池第四个，java/lang/Object，即它的超类为java.lang.Object<br />
00 00：接口个数0。<br />
00 01：field数量1。<br />
00 12 00 05 00 06 00 01 00 07 00 00 00 02 00 08：field的结构如下<br />
field_info {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 access_flags;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 descriptor_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attributes_count;<br />
&nbsp;&nbsp;&nbsp; &nbsp;attribute_info attributes[attributes_count];<br />
&nbsp;&nbsp;&nbsp; }<br />
access_flags为00 12，代表ACC_PRIVATE+ ACC_FINAL<br />
<br />
name_index：常量池索引为5的入口，即f1，即类成员的名字为f1<br />
descriptor_index：I，代表integer。<br />
&nbsp;attributes_count：1个。<br />
attribute_info：<br />
attribute_info {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attribute_name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u4 attribute_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u1 info[attribute_length];<br />
}<br />
</span></span></p>
<p><span style="font-size: 18pt"><span style="font-size: 12pt">attribute_name_index：7，即ConstantValue，结构如下<br />
ConstantValue_attribute {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attribute_name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u4 attribute_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 constantvalue_index;<br />
&nbsp;&nbsp;&nbsp; }<br />
attribute_length：2<br />
constantvalue_index：2<br />
----------------------------------------下面开始方法</span></span></p>
<p><span style="font-size: 18pt"><span style="font-size: 12pt">00 03：3个方法。<br />
method_info {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 access_flags;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 descriptor_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attributes_count;<br />
&nbsp;&nbsp;&nbsp; &nbsp;attribute_info attributes[attributes_count];<br />
&nbsp;&nbsp;&nbsp; }<br />
--------------------------------------------第一个方法&lt;init&gt;，这个是编译器产生的生成实例的初始化方法。<br />
access_flags：public<br />
name_index：00 09，&lt;init&gt;<br />
descriptor_index：00 0A，()V表示无参数，返回void<br />
attributes_count :00 01,1个<br />
attribute_name_index ：00 0B ，code<br />
attribute_length：38个<br />
Code_attribute {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attribute_name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u4 attribute_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 max_stack;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 max_locals;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u4 code_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u1 code[code_length];<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 exception_table_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;u2 start_pc;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;u2 end_pc;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;u2&nbsp; handler_pc;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;u2&nbsp; catch_type;<br />
&nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;exception_table[exception_table_length];<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attributes_count;<br />
&nbsp;&nbsp;&nbsp; &nbsp;attribute_info attributes[attributes_count];<br />
&nbsp;&nbsp;&nbsp; }<br />
max_stack: 00 02<br />
max_locals: 00 01<br />
code_length: 00 00 00 0A,10<br />
code: 2A B7 00 01 2A 05 B5 00 02 B1,指令<br />
exception table length：00 00<br />
attributes_count：1<br />
attribute_name_index：00 0C，LineNumberTable<br />
LineNumberTable_attribute {<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 attribute_name_index;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u4 attribute_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;u2 line_number_table_length;<br />
&nbsp;&nbsp;&nbsp; &nbsp;{&nbsp; u2 start_pc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; u2 line_number;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;} line_number_table[line_number_table_length];<br />
&nbsp;&nbsp;&nbsp; }<br />
attribute_length：10<br />
line_number_table_length：2<br />
start_pc：00 00<br />
line_number：00 01<br />
tart_pc：00 04<br />
line_number：00 03<br />
到此第一个方法结束。<br />
----------------------------------------------------------------------第二个方法开始<br />
<span lang="EN-US" style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: 宋体; mso-bidi-font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-font-kerning: 0pt">access_flags</span><span style="font-size: 12pt; color: black; font-family: 宋体; mso-bidi-font-family: 宋体; mso-bidi-font-size: 11.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-font-kerning: 0pt">：<span lang="EN-US">00 01</span>，<span lang="EN-US">public</span></span><br />
name_index：00 0D，m1<br />
desc_index：00 0E，(I)I，有一个整数参数，返回一个整数。<br />
00 01：一个attr<br />
00 0B：code<br />
00 00 00 1C：attr_length:28<br />
Code_atrr:28个字节，不分析了和上面的方法相同。<br />
<br />
----------------------------------------------------------------------第三个方法<br />
00 02：private<br />
00 0F：m2<br />
00 0A: ()V，无参，返回void<br />
00 01：一个attr<br />
00 0B：code<br />
00 00 00 19：attr_length&nbsp; 25<br />
接下去的25个字节是Code_atrr，同样不分析了。<br />
------------------------------------------------------------------<br />
00 01：1个类的attr<br />
00 10：SourceFile<br />
00 00 00 02：len=2<br />
00 11：17，TJ.java<br />
</span></span></p> <img src ="http://www.blogjava.net/simonshen/aggbug/311566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simonshen/" target="_blank">simon.shen</a> 2010-02-22 19:30 <a href="http://www.blogjava.net/simonshen/archive/2010/02/22/311566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>