<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>[203] lG 槛~  迈过去!</title>
    <description>工作狂.
技术爱好者.</description>
    <link>http://lggege.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>举例解析Java的反射机制</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/218770" style="color:red;">http://lggege.javaeye.com/blog/218770</a>&nbsp;
          发表时间: 2008年07月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ul><li><strong>1. 使用反射得到对象的属性. 注: 属性的使用,同样也受private,public等作用域的限制.</strong></li></ul><br /><pre name="code" class="java">
public class FieldClass {
	public String publicField = "ss"; // public 属性
	private Double privateField = new Double(22.22); // private 属性
	public static Boolean staticField = true; // static 属性
}


import java.lang.reflect.Field;
import junit.framework.TestCase;

public class FieldTestCase extends TestCase {
	public void testField() throws Exception {
		FieldClass test = new FieldClass();

		Field field1 = FieldClass.class.getField("publicField");
		assertEquals(field1.get(test), test.publicField); // 能够使用test.intPublicField,则也可以使用反射得到值

		try {
			Field field2 = FieldClass.class.getField("privateField");
		} catch (Exception e) {
			assertTrue(e instanceof java.lang.NoSuchFieldException); // 由于doubleField是private的, 不可被外部直接调用
		}

		Field field3 = FieldClass.class.getField("staticField");
		assertTrue((Boolean) field3.get(FieldClass.class));
	}
}</pre><br /><br /><ul><li><strong>2. 使用反射得到对象的无参方法.</strong></li></ul><br /><pre name="code" class="java">
public class MethodClass {
	public String publicMehod() {
		return "public";
	}
	
	private String privateMethod() {
		return "private";
	}
	
	public static String staticMethod() {
		return "static";
	}
}

import java.lang.reflect.Method;
import junit.framework.TestCase;

public class MethodTestCase extends TestCase {
	public void testMethod() throws Exception {
		MethodClass test = new MethodClass();

		Method method1 = MethodClass.class.getMethod("publicMehod", new Class[] {});
		assertEquals(method1.invoke(test, new Object[] {}), "public");

		try {
			Method method2 = MethodClass.class.getMethod("privateMethod", new Class[] {});
		} catch (Exception e) {
			assertTrue(e instanceof NoSuchMethodException);
		}

		Method method3 = MethodClass.class.getMethod("staticMethod", new Class[] {});
		assertEquals(method3.invoke(MethodClass.class, new Object[] {}), "static");
	}
}
</pre><br /><br /><br /><ul><li><strong>3. 使用反射得到对象的有参方法.</strong></li></ul><br /><pre name="code" class="java">public class ArguementMethodClass {
	public String methodWithNoArguement() {
		return "no";
	}
	
	public String methodWithOneArgument(String arg) {
		return "one";
	}
	
	public String methodWithTwoArguments(String arg0, String arg1) {
		return "two";
	}
	
	public String methodWithArrayArguments(String[] argArray) {
		return "array";
	}
	
	public String methodWithMoreArguments(String... args) {
		return "more";
	}
}

import java.lang.reflect.Method;
import junit.framework.TestCase;

public class ArgumentMethodTestCase extends TestCase {
	public void testArgumentMethod() throws Exception {
		ArguementMethodClass test = new ArguementMethodClass();

		Method method1 = ArguementMethodClass.class.getMethod("methodWithNoArguement", new Class[] {});
		method1.invoke(test, new Object[] {});

		Method method2 = ArguementMethodClass.class.getMethod("methodWithOneArgument", new Class[] { String.class });
		assertEquals(method2.invoke(test, new Object[] { "aa" }), "one");

		Method method3 = ArguementMethodClass.class.getMethod("methodWithTwoArguments", new Class[] { String.class, String.class });
		assertEquals(method3.invoke(test, new Object[] { "aa", "bb" }), "two");

		Method method4 = ArguementMethodClass.class.getMethod("methodWithArrayArguments", new Class[] { String[].class });
		assertEquals(method4.invoke(test, new Object[] { new String[] { "aa" } }), "array");

		Method method5 = ArguementMethodClass.class.getMethod("methodWithMoreArguments", new Class[] { String[].class });
		assertEquals(method5.invoke(test, new Object[] { new String[] { "aa" } }), "more");
	}
}
</pre><br /><br /><ul><li><strong>4. 重载的处理.</strong></li></ul><br /><pre name="code" class="java">
public class OverloadMethodClass {
	public String sameMethod() {
		return "one";
	}
	
	public String sameMethod(String arg) {
		return "two";
	}
}
import java.lang.reflect.Method;
import junit.framework.TestCase;

public class OverloadMthodTestCase extends TestCase {
	public void testOverrideMethod() throws Exception {
		OverloadMethodClass test = new OverloadMethodClass();

		Method method1 = OverloadMethodClass.class.getMethod("sameMethod", new Class[] {});
		assertEquals(method1.invoke(test, new Object[] {}), "one");

		Method method2 = OverloadMethodClass.class.getMethod("sameMethod", new Class[] { String.class });
		assertEquals(method2.invoke(test, new Object[] { "aa" }), "two");
	}
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/218770#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jul 2008 22:53:38 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/218770</link>
        <guid>http://lggege.javaeye.com/blog/218770</guid>
      </item>
      <item>
        <title>Sprint生成索引卡的Excel下载</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/217434" style="color:red;">http://lggege.javaeye.com/blog/217434</a>&nbsp;
          发表时间: 2008年07月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          生成索引卡的Excel下载地址:<br /><a href="http://www.crisp.se/henrik.kniberg/scrum/index-card-generator/excel-claudio/ProductBacklog_v1.1.xls" target="_blank">http://www.crisp.se/henrik.kniberg/scrum/index-card-generator/excel-claudio/ProductBacklog_v1.1.xls</a><br /><br />也可以本地下载:<br /><a href="http://lggege.javaeye.com/upload/attachment/31865/8d59a9c4-c792-3902-9be1-9a27f0adb9f8.rar" target="_blank">http://lggege.javaeye.com/upload/attachment/31865/8d59a9c4-c792-3902-9be1-9a27f0adb9f8.rar</a><br /><br />HenrikKniberg的Blog<br /><a href="http://blog.crisp.se/henrikkniberg" target="_blank">http://blog.crisp.se/henrikkniberg</a><br /><br />附索引卡的图:<br /><img src="http://lggege.javaeye.com/upload/picture/pic/18350/49edb3d3-94ce-3f1d-b3b2-d2dd99204513.gif " />
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/217434#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jul 2008 09:39:06 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/217434</link>
        <guid>http://lggege.javaeye.com/blog/217434</guid>
      </item>
      <item>
        <title>有趣的FreeMind</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/217072" style="color:red;">http://lggege.javaeye.com/blog/217072</a>&nbsp;
          发表时间: 2008年07月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          主页<br /><a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page" target="_blank">http://freemind.sourceforge.net/wiki/index.php/Main_Page</a><br /><br />下载页面 [注: 使用迅雷下载,SourceForge被封了,无法直接下载...<img src="/images/smiles/icon_cry.gif"/>]<br /><a href="http://freemind.sourceforge.net/wiki/index.php/Download" target="_blank">http://freemind.sourceforge.net/wiki/index.php/Download</a><br /><br /><br /><img src="http://lggege.javaeye.com/upload/picture/pic/18320/5debd98d-4c7b-3436-a2dc-6a5f67963efe.jpg" /><br /><br /><img src="http://freemind.sourceforge.net/FreeMind-computer-knowledge.png" />
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/217072#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jul 2008 16:14:25 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/217072</link>
        <guid>http://lggege.javaeye.com/blog/217072</guid>
      </item>
      <item>
        <title>jconsole的使用</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/216617" style="color:red;">http://lggege.javaeye.com/blog/216617</a>&nbsp;
          发表时间: 2008年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong><span style="color: red">1. 为tomcat中配置jconsole</span></strong><br />在tomcat\bin\catalina.bat中添加具体配置<br /><img src="http://lggege.javaeye.com/upload/picture/pic/18208/2c43d8c8-98dc-3e72-9ac3-39f9bd555c27.jpg" /><br /><br /><strong><span style="color: red">2. 为Eclipse中Run的项目配置jconsole</span></strong><br />修改Arguments的VM arguments<br /><img src="http://lggege.javaeye.com/upload/picture/pic/18210/a3d05578-c6de-38bc-80f8-b28395a328a6.jpg" /><br /><br /><strong><span style="color: red">3. 运行jconsole</span></strong><br /><img src="http://lggege.javaeye.com/upload/picture/pic/18212/b25f8ebb-db81-351f-a771-1c75018cda1e.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/216617#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jul 2008 23:44:33 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/216617</link>
        <guid>http://lggege.javaeye.com/blog/216617</guid>
      </item>
      <item>
        <title>Ibatis的resultMap的cacheModel研究</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/216615" style="color:red;">http://lggege.javaeye.com/blog/216615</a>&nbsp;
          发表时间: 2008年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong><span style="color: red">1. cacheModel属性说明</span></strong><br /><pre name="code" class="xml">
&lt;cacheModel id="code-CacheModel" type ="LRU" readOnly="true" serialize="false">
	&lt;flushInterval seconds="60"/>
	&lt;flushOnExecute statement="CodeModel-InsertCodeModel"/>
	&lt;property name="cache-size" value="1000" /> 
&lt;/cacheModel></pre><br /><br /><strong>id</strong>: cacheModel的id. <br /><br /><strong>type</strong>: cache的类型. ibatis目前提供了LRU,MEMORY,FIFO,OSCACHE这四种.<br /><ul><li>      FIFO: com.ibatis.sqlmap.engine.cache.fifo.FifoCacheController</li><li>      LRU:  com.ibatis.sqlmap.engine.cache.fifo.LruCacheController</li><li>      MEMORY: com.ibatis.sqlmap.engine.cache.fifo.MemoryCacheController</li><li>      OSCACHE: com.ibatis.sqlmap.engine.cache.fifo.OSCacheController</li></ul><br /><br />      当然,你也可以自己来实现Cache, 你需要做的是让你的Cache类 implements com.ibatis.sqlmap.engine.cache.CacheController.<br /><br /><strong>readOnly</strong>: 是否只读. 默认为true, 只读.<br /><br /><strong>serialize</strong>: 是否从Cache中读取同一个对象,还是对象的副本.<br />           只有在readOnly=false才有效.<br />	   因为Cache是只读的,那么为不同session返回的对象肯定是一个.<br />	   只有在Cache是可读写的时候,才需要为每个session返回对象的副本.<br /><br /><strong>flushInterval</strong>: Cache刷新间隔. 可以配置hours,minutes,seconds,milliseconds.<br />           注: 不是说,间隔时间到了,在Cache的statement会自己刷新,而是说,在间隔时间过了后,下次的查询<br />	   将不会从Cache中直接去值,而会用SQL去查.也就是: 如果,间隔时间过了,还没有Cache对应的statement执行<br />	   的话,那么Cache中就会一直是旧的,不用担心Cache数据是旧的,因为下次的查询将会直接从SQL查询,而非Cache,查询的结果也会去更新Cache的值.<br /><br /><strong>flushOnExecute</strong>: 当这些statement被执行了,那么下次的查询将会通过SQL去查,同时用查询结果更新Cache.<br />           注: 和flushInterval的刷新一样,不是主动刷新,而是由下次查询来触发被动刷新.<br />               在一个cacheModel中可以指定多个flushOnExecute.<br /><br /><strong>property</strong>: 这是针对cacheModel的额外的一些属性配置.不同type的cacheModel将会有自己专有的一些property配置.<br />          FIFO: &lt;property name="size" value="100" /><br />          LRU: &lt;property name="cache-size" value="100" /><br />	  MEMORY: &lt;property name="reference-type" value="WEAK" /><br />	  OSCACHE: 该属性不可用, 而是依赖在ClassPath下的一个oscache.properties文件<br /><br /><br /><br /><strong><span style="color: red">2. 具体例子</span></strong><br /><pre name="code" class="xml">&lt;sqlMap namespace="CodeModel">
	&lt;typeAlias alias="codeModel" type="cn.iwoo.demo.model.CodeModel"/>
	
	&lt;cacheModel id="code-CacheModel" type ="LRU" readOnly="true" serialize="false">
		&lt;flushInterval seconds="60"/>
		&lt;flushOnExecute statement="CodeModel-InsertCodeModel"/>
		&lt;property name="cache-size" value="1000" /> 
	&lt;/cacheModel>
	
	&lt;resultMap id="BaseModelResult" class="codeModel">
		&lt;result property="createTime" column="CREATE_TIME"/>
		&lt;result property="deleteTime" column="DELETE_TIME"/>
		&lt;result property="defunctInd" column="DEFUNCT_IND"/>
	&lt;/resultMap>
	
	&lt;resultMap id="CodeModelResult" class="codeModel" extends="BaseModelResult">
		&lt;result property="id" column="CODE_ID"/>
	&lt;/resultMap>
	
	&lt;select id="CodeModel-SelectCodeModel" parameterClass="java.lang.Long" resultMap="CodeModelResult" cacheModel="code-CacheModel">
		SELECT C.CODE_ID, C.CREATE_TIME, C.DELETE_TIME, C.DEFUNCT_IND 
		  FROM CODEMSTR C 
		 WHERE 1 = 1
		 &lt;isNotNull prepend="AND ">
		     C.CODE_ID = #value#
		 &lt;/isNotNull>
        &lt;/select>
	
	&lt;insert id="CodeModel-InsertCodeModel" parameterClass="codeModel">
		INSERT INTO CODEMSTR(CODE_ID, CREATE_TIME, DELETE_TIME, DEFUNCT_IND)
		VALUES (#id#, #createTime#, #deleteTime#, #defunctInd#)
	&lt;/insert>
	
&lt;/sqlMap></pre><br /><br />注: <span style="color: red">cache的key是具体执行的SQL语句.</span><br /><br />举例来说明: 如上面的&lt;select id="CodeModel-SelectCodeModel".<br /><br />第一次值为1的查询: 通过SQL查询, 缓存的key就会是SELECT...AND C.CODE_ID = 1, 缓存的value就是查询结果.<br />再执行值为1的查询: 结果就会直接从cache中取. [当然前提必须是:flushInterval还没到,同时flushOnExecute对应的statement还没有被执行过]<br /><br />如果再执行一次值为2的查询: 那么由于key为 SELECT...AND C.CODE_ID = 2, 在cache不存在, 就会直接执行SQL, 并将结果缓存起来.<br /><br />也就是cache完全是以具体执行的SQL语句作为key来存储的.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/216615#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jul 2008 23:36:24 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/216615</link>
        <guid>http://lggege.javaeye.com/blog/216615</guid>
      </item>
      <item>
        <title>RAP[2] RAP应用的Session问题</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/209023" style="color:red;">http://lggege.javaeye.com/blog/209023</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于RAP是服务器端的应用，在这点上与一般的WEB应用没有什么区别。所以，RAP应用也需要解决Session问题。<br /><br />[1]. 传统的单件模式<br /><pre name="code" class="java">public class UserSession {
	private Integer number = 0;
	private static UserSession instance = new UserSession();
	public static getInstance() {
		return instance ;
	}
	public Integer getNumber() {
		this.number++; // 取一次值，就++
		return this.number;
	}
}</pre><br />开着多个IE测试，你将会发现，多个IE任一调用getNumber(),那么，这个值会一直加。这说明普通的单件模式在RAP上要小心应用。<br /><br /><br />还好RAP提供了一个很简单的解决方案。就是：SessionSingletonBase.<br /><br />SessionSingletonBase是抽象类，需要自定义的Session类去继承它。它的子类能提供针对一个user 上下文的唯一实体，也就是在一个user context中调用getInstance(Class)将会一直得到同一个对象实体，但对于不同user的context却会得到不同的对象实体。<br /><br />[1]. 定义具体的Session类<br /><pre name="code" class="java">public class UserSession extends SessionSingletonBase {
	private Integer number = 0; // 只是一个简单的针对单个用户的计数器

        // User currentUser;  你需要的也许是这样有意义的属性
        // Date loginTime;	

	private UserSession() { }

	public static UserSession getInstance() {
		return (UserSession) SessionSingletonBase.getInstance(UserSession.class);
	}
	
	public Integer getNumber() {
		this.number++; // 取一次值，就++. 当然，你也可以改成一个setNumber方法。
		return this.number;
	}
}</pre><br /><br />请注意中间的这段代码，这就是关键.SessionSingletonBase.getInstance(UserSession.class)如果值存在就一直返回这个，如果不存在将会new一个UserSession返回。<br /><pre name="code" class="java">public static UserSession getInstance() {
	return (UserSession) SessionSingletonBase.getInstance(UserSession.class);
}</pre><br /><br />[2]. 自定义Session类的使用<br />// 拿值<br />UserSession.getInstance().getNumber();<br /><br />好了，你可以开多个IE去测试，看看，每个UserSession的number是否只与单个IE相关联。<br /><br /><br />###################<br /><a href="http://lggege.javaeye.com/blog/207286" target="_blank">RAP[1]RAP环境的安装</a>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/209023#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jun 2008 22:42:27 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/209023</link>
        <guid>http://lggege.javaeye.com/blog/209023</guid>
      </item>
      <item>
        <title>RAP[1] RAP开发环境的安装</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/207286" style="color:red;">http://lggege.javaeye.com/blog/207286</a>&nbsp;
          发表时间: 2008年06月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我的环境：<br />jdk1.5.0_11<br />eclipse-jee-ganymede-RC5 eclipse4.0<br /><br />官网下载：<br />rap-sdk-1.1.0-RC4-site-20080613-1119.zip<br />rap-1.1.0-RC4-target-3.4-20080613-1055.zip<br /><br />当然，记得要下载和你的Eclipse匹配的SDK和Target。<br /><br /><span style="color: red"><strong>1.安装Rap SDK</strong></span><br />rap-sdk-1.1.0-RC4-site-20080613-1119.zip解压。<br />Help->SoftWare Update->Available Software->Add Site->Local<br />指向rap-sdk-1.1.0-RC4-site-20080613-1119.zip的解压目录，确认后，Eclipse自动安装Rap SDK。<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16517/0952f091-e19a-3a02-840e-98e19b13d767.jpg " /><br /><br /><br /><span style="color: red"><strong>2. 设置Target Platform</strong></span><br />解压rap-1.1.0-RC4-target-3.4-20080613-1055.zip。<br />Window->Preference->Plug-in Development->Target Platform<br />设置Location为rap-1.1.0-RC4-target-3.4-20080613-1055.zip的解压目录。点击Apply->OK<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16519/fc6171c2-4b42-343f-b505-0fce9a8a8403.jpg " /><br /><br /><br /><span style="color: red"><strong>3.创建RAP项目</strong></span><br />新建一个Plug-in Project<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16521/a4bc9d65-21ef-38a4-9494-cf430bc30ad8.jpg" /><br /><br />在Rich Client Applicent<br />Would you like to create a rich client application ? 要选择No<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16523/9f772801-475c-30e9-9585-5f9078956faf.jpg " /><br /><br />Next后，在Available Tamplates列表内，就可以看到RAP Application With a View和RAP Hello World和RAP Mail Template了。<br />[img]Next后，<br />在Available Tamplates列表内，就可以看到RAP Application With a View<br />和RAP Hello World<br />和RAP Mail Template<br />了。[/img]<br /><br /><br /><span style="color: red"><strong>4.运行</strong></span><br />在.lunch文件上ＲＵＮ　ＡＳ<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16527/2a6e2c48-6971-3b03-b981-f8d9cfb1a257.jpg " /><br /><br />好了，看到效果了<br /><img src="http://lggege.javaeye.com/upload/picture/pic/16529/bdf98d90-a70a-3cb5-a340-f524ce9ee1d9.jpg " /><br /><br /><br />################################################<br /><a href="http://lggege.javaeye.com/blog/209023" target="_blank">RAP[二] RAP的Session问题</a>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/207286#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Jun 2008 00:37:13 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/207286</link>
        <guid>http://lggege.javaeye.com/blog/207286</guid>
      </item>
      <item>
        <title>Mysql支持事务的InnoDB</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/204577" style="color:red;">http://lggege.javaeye.com/blog/204577</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>1. 配置My.ini</strong><br />我的my.ini是从my-small.ini重命名来的，也没有更改里面原有的任何配置。<br /><br />看英文提示，将下面的原本注释掉的行打开，再修改了一下目录即可。<br /><div class="quote_title">引用</div><div class="quote_div"># Uncomment the following if you are using InnoDB tables<br />innodb_data_home_dir = D:\JAVA\mysql-5.0.27-win32\data<br />innodb_data_file_path = ibdata1:10M:autoextend<br />innodb_log_group_home_dir = D:\JAVA\mysql-5.0.27-win32\data<br />innodb_log_arch_dir = D:\JAVA\mysql-5.0.27-win32\data<br /># You can set .._buffer_pool_size up to 50 - 80 %<br /># of RAM but beware of setting memory usage too high<br />innodb_buffer_pool_size = 16M<br />innodb_additional_mem_pool_size = 2M<br /># Set .._log_file_size to 25 % of buffer pool size<br />innodb_log_file_size = 5M<br />innodb_log_buffer_size = 8M<br />innodb_flush_log_at_trx_commit = 1<br />innodb_lock_wait_timeout = 50</div><br />配置完毕，启动Mysql，会发现，D:\JAVA\mysql-5.0.27-win32\data【innodb_data_home_dir】<br />多了ibdata1，ib_logfile0，ib_logfile1三个文件。<br /><br /><br /><strong>2. 创建InnoDB表</strong><br /><div class="quote_title">引用</div><div class="quote_div">mysql> drop database iwoo;<br />Query OK, 1 row affected (0.08 sec)<br /><br />mysql> create database iwoo;<br />Query OK, 1 row affected (0.02 sec)<br /><br />mysql> use iwoo;<br />Database changed<br />mysql> create table article (id bigint(20), title varchar(50)) type=InnoDB;<br />Query OK, 0 rows affected, 1 warning (0.08 sec)<br /><br />mysql> show table status from iwoo;<br />+---------+--------+<br />| Name    | Engine |<br />+---------+--------+<br />| article | InnoDB |<br />+---------+--------+<br />1 row in set (0.00 sec)</div><br /><br /><br /><br /><strong>3. 转换 MyISAM与InnoDB</strong><br /><div class="quote_title">引用</div><div class="quote_div">mysql> drop database iwoo;<br />Query OK, 1 row affected (0.36 sec)<br /><br />mysql> create database iwoo;<br />Query OK, 1 row affected (0.00 sec)<br /><br />mysql> use iwoo;<br />Database changed<br />mysql> create table article (id bigint(20), title varchar(50));<br />Query OK, 0 rows affected (0.05 sec)<br /><br />mysql> show table status from iwoo;<br />+---------+--------+<br />| Name    | Engine | <br />+---------+--------+<br />| article | MyISAM | <br />+---------+--------+<br />1 row in set (0.00 sec)<br /><br />mysql> alter table article type=InnoDB;<br />Query OK, 0 rows affected, 1 warning (0.47 sec)<br />Records: 0  Duplicates: 0  Warnings: 0<br /><br />mysql> show table status from iwoo;<br />+---------+--------+<br />| Name    | Engine |<br />+---------+--------+<br />| article | InnoDB |<br />+---------+--------+<br />1 row in set (0.00 sec)<br /><br />mysql> alter table article type = MyISAM;<br />Query OK, 0 rows affected, 1 warning (0.11 sec)<br />Records: 0  Duplicates: 0  Warnings: 0<br /><br />mysql> show table status from iwoo;<br />+---------+--------+<br />| Name    | Engine |<br />+---------+--------+<br />| article | MyISAM |<br />+---------+--------+<br />1 row in set (0.00 sec)</div><br /><br /><strong>4。测试事务</strong><br /><br /><div class="quote_title">引用</div><div class="quote_div">mysql> begin;<br />Query OK, 0 rows affected (0.00 sec)<br /><br />mysql> insert into article values(1,'z');<br />Query OK, 1 row affected (0.00 sec)<br /><br />mysql> select * from article;<br />+------+-------+<br />| id   | title |<br />+------+-------+<br />|    1 | z     |<br />+------+-------+<br />1 row in set (0.00 sec)<br /><br />mysql> rollback;<br />Query OK, 0 rows affected (0.05 sec)<br /><br />mysql> select * from article;<br />Empty set (0.00 sec)</div>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/204577#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jun 2008 09:45:33 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/204577</link>
        <guid>http://lggege.javaeye.com/blog/204577</guid>
      </item>
      <item>
        <title>惊艳!!! Swt 上的Ribbon.</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/199749" style="color:red;">http://lggege.javaeye.com/blog/199749</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Office2007中,大行其道的Fluent/Ribbon图形用户界面,真是漂亮.<br /><br />今日在网上偶尔看到Swt上Ribbon. 真是惊艳呀.<br />主页:        <a href="http://www.hexapixel.com/projects/" target="_blank">http://www.hexapixel.com/projects/</a><br />Screenshots: <a href="http://www.hexapixel.com/ribbon/" target="_blank">http://www.hexapixel.com/ribbon/</a><br /><br />可以下载它的jar包和源代码.<br /><a href="http://www.hexapixel.com/download.php?file=com.hexapixel.widgets.ribbon.alphatest.jar" target="_blank">JAR</a><br /><a href="http://www.hexapixel.com/download.php?file=com.hexapixel.widgets.ribbon.alphatest.src.jar" target="_blank">SOURCE</a><br /><br /><br />下面直接贴图:<br /><img src="http://www.hexapixel.com/ribbon/ribbshell1.jpg" /><br /><br /><img src="http://www.hexapixel.com/ribbon/ss1.gif" /><br /><br /><img src="http://www.hexapixel.com/ribbon/ss12.gif" /><br /><br /><img src="http://www.hexapixel.com/ribbon/ss5.gif" />
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/199749#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 15:27:58 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/199749</link>
        <guid>http://lggege.javaeye.com/blog/199749</guid>
      </item>
      <item>
        <title>Eclipse UI 规范</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/199741" style="color:red;">http://lggege.javaeye.com/blog/199741</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          下面的是Eclipse的UI规范.<br /><br />http://www.eclipse.org/articles/Article-UI-Guidelines/index_cn.html<br />[如果发现编码有问题,请切换到GBK(2312)即可]<br /><br />公司也曾制定过RCP开发的界面规范,涉及到方方面面.<br />讨论了许久控件间像素问题,约定了一个简单标准,就是5像素,两个控件间的控件间隙为5像素.就一个简单的约定,让开发人员轻松了很多.<br />Eclipse的UI规范中也对控件间像素有着严格规定,不同场合的3像素,5像素,7像素,头都大.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/199741#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 15:08:20 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/199741</link>
        <guid>http://lggege.javaeye.com/blog/199741</guid>
      </item>
      <item>
        <title>简易的SprintProductBacklog.xls下载</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/198946" style="color:red;">http://lggege.javaeye.com/blog/198946</a>&nbsp;
          发表时间: 2008年05月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          网上下载了一个<a href="http://agilesoftwaredevelopment.com/system/files/SimpleSprintBacklog.xls" target="_blank">SimpleSprintBacklog.xls</a>.<br /><br />自己做了一下修改.可下载.见附件:
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/198946#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 31 May 2008 11:52:38 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/198946</link>
        <guid>http://lggege.javaeye.com/blog/198946</guid>
      </item>
      <item>
        <title>三天国丧的行为准则 [zz]</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/194314" style="color:red;">http://lggege.javaeye.com/blog/194314</a>&nbsp;
          发表时间: 2008年05月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <ul><li>　　第一：三天国丧期间，着装要正式、肃穆，不要穿戴太时尚或者颜色鲜艳的衣服、鞋帽，女同志不要用鲜艳的口红眼影化彩装，不要佩戴时尚的首饰；</li><li>　　第二：工休的时候不许开音乐、不许打牌，不许打闹嬉戏；</li><li>　　第三：要注意维护公共场所的气氛，在街上行走的时候，不要三五成群的嘻闹；</li><li>　　第四：下班之后不要出入舞厅、卡拉OK厅、台球社，也不要在家里放歌曲，唱卡拉OK、举办朋友聚会；</li><li>　　第五：可以佩戴一些表示哀悼、追念的标志或饰品；</li><li>　　第六：5月19日14时28分，停止工作三分钟。</li><li>　　第七：这是第一次为百姓举行国丧，中国的百姓会不习惯、不重视，也不知道该怎么做，希望大家尽量在亲朋好友中传递这些信息，并随时纠正看到的不正确行为。</li></ul><br /><br /><br />注: 来自于msn群. 感觉, 大家还是相互转告, 毕竟算是中国第一次为百姓进行国丧, 哀悼我们的亲人. <br /><br />愿 死者安息,生者坚强!
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/194314#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 19 May 2008 11:39:44 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/194314</link>
        <guid>http://lggege.javaeye.com/blog/194314</guid>
      </item>
      <item>
        <title>Spring 的XmlBeanDefinitionStoreException异常</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/188612" style="color:red;">http://lggege.javaeye.com/blog/188612</a>&nbsp;
          发表时间: 2008年05月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from ServletContext resource [/WEB-INF/modules/applicationContext-dao.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
Caused by: 
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.</pre><br /><br />最初看到这个异常,就感觉是spring对xml解析出的异常,肯定是对应的.xsd文件找不到引发的.<br /><br />在项目中,使用的是spring.jar,这是一个最大的jar,包含了所有其他的内容.<br />同时,spring还提供了将spring.jar按照功能拆分后的众多小的jar包.<br />但在spring.jar中,有一下.xsd文件没有的,但在小的jar中就包含.<br />今天遇到的问题就是,spring.jar中不包含spring-aop-2.0.xsd文件,但在spring-aop.jar中就包含了.<span style="color: red">将spring.jar去掉,换成其他小的jar包</span>.问题解决.<br /><br />注:<br />XmlBeanDefinitionStoreException<br />应该不仅仅是这么点内容,可能还有别的问题也会引起.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/188612#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 01 May 2008 11:42:14 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/188612</link>
        <guid>http://lggege.javaeye.com/blog/188612</guid>
      </item>
      <item>
        <title>Groovy还是JRuby [zz]</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/188011" style="color:red;">http://lggege.javaeye.com/blog/188011</a>&nbsp;
          发表时间: 2008年04月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Groovy还是JRuby? 这也是我经常问自己的问题. 现在看看别人的讨论.<br /><br />[zz]<br /><a href="http://blog.csdn.net/hivon/archive/2008/04/25/2328189.aspx" target="_blank">http://blog.csdn.net/hivon/archive/2008/04/25/2328189.aspx</a>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/188011#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Apr 2008 12:55:46 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/188011</link>
        <guid>http://lggege.javaeye.com/blog/188011</guid>
      </item>
      <item>
        <title>奇异的ClassFormatError</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/187717" style="color:red;">http://lggege.javaeye.com/blog/187717</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red"><strong>java.lang.ClassFormatError: Invalid pc in LineNumberTable in class file ....</strong></span><br /><br />代码在开发的Eclipse上怎么都是正常的, 但一旦将其编译成jar文件后,进入改代码对应的功能页面后,就抛这个错误.[无论开发还是测试的电脑上都会有]<br /><br />上网查了下,应该是源代码的行数过多造成的.<br /><br />这个类的代码有6k多行,不停的重构,不停的测试,终于在3.5k的时候不抛异常了.[具体jdk可以支持多少行就不清楚了]<br /><br />终于知道pc是什么意思了,在编译过后的.class文件中,可以看到类似下面的内容.<br /><pre name="code" class="java">
189 return
    Exception table
    [pc : 96, pc : 106] -> 109 when : java.net.MalformedURLException
    Line numbers:
    [pc : 0, line : 73]
    [pc : 4, line : 78]
....</pre>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/187717#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Apr 2008 18:10:48 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/187717</link>
        <guid>http://lggege.javaeye.com/blog/187717</guid>
      </item>
      <item>
        <title>project life cycle [只是一张图]</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/186919" style="color:red;">http://lggege.javaeye.com/blog/186919</a>&nbsp;
          发表时间: 2008年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          偶翻出来,还是蛮有感触的. 见附件:
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/186919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Apr 2008 19:09:54 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/186919</link>
        <guid>http://lggege.javaeye.com/blog/186919</guid>
      </item>
      <item>
        <title>GEF显示网格和吸附功能</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/186630" style="color:red;">http://lggege.javaeye.com/blog/186630</a>&nbsp;
          发表时间: 2008年04月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red">GraphicalEditor中,需要申明要开启网格和吸附功能.</span><br /><pre name="code" class="java">protected void configureGraphicalViewer() {
       ...
       viewer.setProperty(SnapToGrid.PROPERTY_GRID_ENABLED,Boolean.TRUE); // 网格功能可用
       viewer.setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE,Boolean.TRUE); // 网格可视
       viewer.setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, Boolean.TRUE); // 自动吸附
}</pre><br /><br /><span style="color: red">EditPart中</span><br /><pre name="code" class="java">	/**
	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
	 */
	public Object getAdapter(Class adapter) {
		if (adapter == SnapToHelper.class) {
			List snapStrategies = new ArrayList();
			Boolean val = (Boolean)getViewer().getProperty(RulerProvider.PROPERTY_RULER_VISIBILITY);
			if (val != null && val.booleanValue())
				snapStrategies.add(new SnapToGuides(this));
			val = (Boolean)getViewer().getProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED);
			if (val != null && val.booleanValue())
				snapStrategies.add(new SnapToGeometry(this));
			val = (Boolean)getViewer().getProperty(SnapToGrid.PROPERTY_GRID_ENABLED);
			if (val != null && val.booleanValue())
				snapStrategies.add(new SnapToGrid(this));
			
			if (snapStrategies.size() == 0)
				return null;
			if (snapStrategies.size() == 1)
				return snapStrategies.get(0);

			SnapToHelper ss[] = new SnapToHelper[snapStrategies.size()];
			for (int i = 0; i &lt; snapStrategies.size(); i++)
				ss[i] = (SnapToHelper)snapStrategies.get(i);
			return new CompoundSnapToHelper(ss);
		}
		return super.getAdapter(adapter);
	}</pre><br /><br />好了, 这样就可以了
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/186630#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 Apr 2008 10:09:06 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/186630</link>
        <guid>http://lggege.javaeye.com/blog/186630</guid>
      </item>
      <item>
        <title>GEF中的ROLE [zz]</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/185415" style="color:red;">http://lggege.javaeye.com/blog/185415</a>&nbsp;
          发表时间: 2008年04月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          [zz from http://wz.csdn.net/url/989477/]<br /><br /><strong><span style="color: red">COMPONENT_ROLE</span> </strong><br />大多数EditPart应该有这个基本的Role，一个component在它的parent中，并且可以从它的parent中删除。更一般地，它可以是只涉及此EditPart的任何事物（不涉及view，因为它是non-graphical的）。在Logic例子中，LEDEditParts在Component Role中有一个知道怎样增加LED对象的值的专门EditPolicy。<br /><br /><strong><span style="color: red">CONNECTION_ROLE</span> </strong><br />ConnectionEditPart应该具有的基本Role（而不是COMPONENT_ROLE），Connections与components稍有不同：Connections典型的删除是从它的源、目标结点间去掉connection，而不必从它的parent中去掉。<br /><br /><strong><span style="color: red">CONTAINER_ROLE</span></strong> <br />大多数有children的EditParts应该具有的基本Role，一个容器可能涉及adds/orphans, 和 creates/deletes。<br /><br /><strong><span style="color: red">PRIMARY_DRAG_ROLE</span></strong> <br />用于允许用户拖拽EditPart，用户可以通过clicking和dragging直接拖拽它，也可以间接地通过点击EditPart创建的Handle来完成。<br /><br /><strong><span style="color: red">LAYOUT_ROLE</span></strong> <br />它被置于有图形布局（graphical layout）的容器EditPart上。如果布局有约束（constraints），它将为输入计算合理的约束；否则它可能除了有child的index外，没有约束。（it may have no constraints other than the index where children will be placed.）<br /><br /><strong><span style="color: red">GRAPHICAL_NODE_ROLE</span></strong> <br />A node supports connections to terminals.当创建、操作连接时，包含这个Role的Editpolicy会分析request的数据，来在图形view上做“hit testing”，并且判断这个connection的语义。<br /><br /><strong><span style="color: red">CONNECTION_ENDPOINTS_ROLE</span></strong> <br />允许用户以图形的方式拖拽一个connectionEditPart的端点。<br /><br /><strong><span style="color: red">CONNECTION_BENDPOINTS_ROLE</span></strong> <br />允许用户在连接的中间拖拽和创建拐点（bendpoint）.<br /><br /><strong><span style="color: red">SELECTION_FEEDBACK_ROLE</span></strong> <br />这个Role仅仅是个反馈（feedback）。当鼠标进入并停留在对象上时，选择工具将向parts发出两种request。EditPolicy实现这个Role会在某方面改变EditPart的View，或弹出提示和标签等等。<br /><br /><strong><span style="color: red">TREE_CONTAINER_ROLE</span></strong> <br />本地SWT Tree的Layout Role的等价物。这个EditPolicy应该在树上显示反馈并计算索引，就像在file explorer里拖拽一样。
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/185415#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Apr 2008 13:09:12 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/185415</link>
        <guid>http://lggege.javaeye.com/blog/185415</guid>
      </item>
      <item>
        <title>得到特定URL网页的源代码</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/182126" style="color:red;">http://lggege.javaeye.com/blog/182126</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">					
public class WebSpider {
	public static void main(String[] args) throws Exception {
		String urlString = "http://lggege.javaeye.com/blog/173840";
		URL url = new URL(urlString);
		Object contentObj = url.getContent();

		if (contentObj instanceof InputStream) {
			new InputStreamReader((InputStream) contentObj);
			BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) contentObj));
			StringBuffer sb = new StringBuffer();
			while (br.ready()) {
				sb.append(br.readLine());
			}
			// 这步还需要处理编码问题.    
			System.out.println(new String(sb.toString().getBytes(), "UTF-8"));
		}
	}
}
</pre><br />上面是代码. <br /><br />在这步:<br />Object contentObj = url.getContent();<br />是真正向URL服务器请求得到数据,也就是页面源代码.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/182126#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 16:25:51 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/182126</link>
        <guid>http://lggege.javaeye.com/blog/182126</guid>
      </item>
      <item>
        <title>vi编辑器的web练习页面</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/182082" style="color:red;">http://lggege.javaeye.com/blog/182082</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.masswerk.at/jsuix/index.html" target="_blank">http://www.masswerk.at/jsuix/index.html</a><br />提供了虚拟的vi编辑器,可以在上面做练练手.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/182082#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 13:55:59 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/182082</link>
        <guid>http://lggege.javaeye.com/blog/182082</guid>
      </item>
      <item>
        <title>替换掉无齿的单例模式（Singleton）</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/181417" style="color:red;">http://lggege.javaeye.com/blog/181417</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: darkred"><strong>单例模式（Singleton）</strong></span><br />鼎鼎大名的Singleton模式,就是为了在一个JVM内只有一个实例对象存在.<br /><pre name="code" class="java">public class SingletonClass {
    // 饿汉式单例模式
    private static SingletonClass action = new SingletonClass ();
    private SingletonClass () { }
    public static SingletonClass getInstance() {
        return action;
    }
}
</pre><br />上面就是Singleton模式的例子,用的人过于普遍了,也被人谴责了良多,下面就寻找一个新的模式,用于替换掉无齿的Singleton模式.<br /><br /><pre name="code" class="java">public abstract class SingletonClass {
	public static void method() {
		// noop
	}
}</pre><br />就是上面的代码.<br /><br />使用方法就是<br /><pre name="code" class="java">SingletonClass.method();</pre><br /><br />我们也不需要下面这个构造函数了,下面的构造函数就是为了阻止new SingletonClass()操作,而我们的类本来就是abstract的,同样不允许new 操作.<br /> <pre name="code" class="java">   private SingletonClass () {
    }</pre><br /><br />当然,你可以对abstract的SingletonClass进行匿名实现,下面的操作是可行的,就会无法达到最终Singleton的目的.<br /><pre name="code" class="java">SingletonClass one = new SingletonClass() { };</pre><br />为了阻止上面的事情发生,你也完全可以把abstract修改成final的.<br /><br />不过,使用abstract是有一定益处的,你可以让它被同样是abstract的类继承,从而得到更多特性.<br /><pre name="code" class="java">public abstract class SingletonTwoClass extends SingletonClass {
	public static void method() {
	}
}</pre><br />这样也是个不错的选择吧.<br /><br />后记:从Spring的源代码中得到的方法.Spring真是一个大宝库.
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/181417#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Apr 2008 18:32:40 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/181417</link>
        <guid>http://lggege.javaeye.com/blog/181417</guid>
      </item>
      <item>
        <title>我们需要assert吗[二]</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/181194" style="color:red;">http://lggege.javaeye.com/blog/181194</a>&nbsp;
          发表时间: 2008年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">    /**
     * Internal constructor for already-normalized pathname strings.
     * The parameter order is used to disambiguate this method from the
     * public(File, String) constructor.
     */
    private File(String child, File parent) {
        assert parent.path != null;
        assert (!parent.path.equals(""));
        this.path = fs.resolve(parent.path, child);
	    this.prefixLength = parent.prefixLength;
    }</pre><br /><br />上面的这段代码是无意间看到的，看到后，觉得很是奇怪，在一个这么公用的java.io.File居然用了assert。<br /><br />我继续翻java的源代码，试着去找，发现使用了assert的地方甚少。<br /><br />当然，在这里就算编译运行不开启assert功能，也影响不大，不会因为使用了assert而使代码的语义逻辑发生改变。<br /><br /><ul><li>org.eclipse.jface.util.Assert      AssertionFailedException</li><li>org.eclipse.core.runtime.Assert    IllegalArgumentException</li><li>junit.framework.Assert             AssertionFailedError</li></ul><br />都提供了替代assert功能的Assert类，上面的几个Assert类的功能和代码都几乎相似，在断言失败后，也都会抛出一个对应的断言失败异常。<br /><br />看了上面替代assert的Assert类,其实都是在做一件事情,就是规避程序自身的问题,就是规避程序员引入的错误.<br /><br /><ul><li>如果不使用assert,就可以使用Assert类,而不用去依赖一个assertion开启与关闭的开关.</li><li>如果使用assert,则记得在调试代码时候要开启,发布后,肯定是需要关闭assert功能的.</li></ul>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/181194#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Apr 2008 12:27:13 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/181194</link>
        <guid>http://lggege.javaeye.com/blog/181194</guid>
      </item>
      <item>
        <title>GEF入门资源汇总</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/180558" style="color:red;">http://lggege.javaeye.com/blog/180558</a>&nbsp;
          发表时间: 2008年04月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          目前网上GEF的例子和文章还是比较稀少的,将一些常见的资源汇总如下(根据个人喜好,进行了筛检):<br /><br /><strong><span style="color: red">Eclipse GEF官网</span></strong><br /><a href="http://www.eclipse.org/gef/" target="_blank">http://www.eclipse.org/gef/</a><br />可以在上面找到GEF的下载地址,上面也可以找到Eclipse提供的例子,当然,后面的文章都是基于这几个例子上的.<br /><br /><br /><strong><span style="color: red">使用图形编辑框架创建基于 Eclipse 的应用程序</span></strong><br /><ul><li><span style="color: blue">中文版</span><a href="http://www.ibm.com/developerworks/cn/linux/opensource/os-gef/" target="_blank">http://www.ibm.com/developerworks/cn/linux/opensource/os-gef/</a></li><li><span style="color: blue">英文版</span><a href="http://www.ibm.com/developerworks/opensource/library/os-gef/" target="_blank">http://www.ibm.com/developerworks/opensource/library/os-gef/</a></li></ul>该文章也是上面GEF网站上推荐的GEF Tutorial文章.<br /><br /><br />作者:八进制<br /><strong><span style="color: red">GEF入门系列</span></strong><br /><a href="http://www.cnblogs.com/bjzhanghao/category/36197.html" target="_blank">http://www.cnblogs.com/bjzhanghao/category/36197.html</a><br />八进制的GEF入门系列,目前共有12个系列,是所有GEF入门者必看的.<br /><br /><br />作者:般若菩提（丁丁）<br /><strong><span style="color: red">eclipse的GEF源码分析</span></strong><br /><a href="http://www.cnblogs.com/xdingding/category/42127.html" target="_blank">http://www.cnblogs.com/xdingding/category/42127.html</a><br />有六个系列,对GEF的分析极致透彻,非看不可.<br /><br /><em>后记:如果还有发现其他资源还会继续添加的.</em>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/180558#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 08 Apr 2008 18:03:54 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/180558</link>
        <guid>http://lggege.javaeye.com/blog/180558</guid>
      </item>
      <item>
        <title>Swing,Swt开源Calendar的收集</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/177120" style="color:red;">http://lggege.javaeye.com/blog/177120</a>&nbsp;
          发表时间: 2008年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          因为项目需要一个Calendar的控件,就上网找开源的Calendar了,将下面常见的做了一个统计.<br /><br /><ul><br /><strong><li><span style="color: red">nebula</span></li><li>Org.vafada.swtcalendar</li><li>com.gface.controls</li><li>net.sf.nachocalendar</li><li>JPopupCalendar </li></strong><br /></ul><br /><br /><strong>http://www.eclipse.org/nebula/</strong><br />主页<a href="http://www.eclipse.org/nebula/" target="_blank">http://www.eclipse.org/nebula/</a><br />这个是eclipse提供的一些基于swt的控件,至极的漂亮(不仅仅是Calendar).^-^. 网上有名的SwtPlus目前就是它的前身. 强烈推荐!!! Eclipse官方的,还是可以值得信赖的.<br /><img src="http://www.eclipse.org/nebula/images/ctabletree.png" /><br /><img src="http://www.eclipse.org/nebula/images/calendarcombo.png" /><br /><img src="http://www.eclipse.org/nebula/images/pshelf.png" /><br /><br /><strong>Org.vafada.swtcalendar</strong><br />主页:<a href="http://swtcalendar.sourceforge.net/" target="_blank">http://swtcalendar.sourceforge.net/</a><br />Demo:<a href="http://swtcalendar.sourceforge.net/demos.html" target="_blank">http://swtcalendar.sourceforge.net/demos.html</a><br />简单,用的人蛮多的.<br /><img src="http://swtcalendar.sourceforge.net/swtcal.png" /><br /><br /><strong>com.gface</strong><br />主页:<a href="http://gface.sourceforge.net/" target="_blank">http://gface.sourceforge.net/</a><br />Demo:<a href="http://gface.sourceforge.net/jws/datepicker.jnlp" target="_blank">http://gface.sourceforge.net/jws/datepicker.jnlp</a><br />基于Swt的.配置性高.<br /><img src="http://sourceforge.net/dbimage.php?id=47599" /><br /><br /><strong>net.sf.nachocalendar</strong><br />主页:<a href="http://nachocalendar.sourceforge.net/" target="_blank">http://nachocalendar.sourceforge.net/</a><br />Demo:<a href="http://nachocalendar.sourceforge.net/demo/nachocalendar.jnlp" target="_blank">http://nachocalendar.sourceforge.net/demo/nachocalendar.jnlp</a><br />基于Swing的.<br /><img src="http://nachocalendar.sourceforge.net/pics/MontPanel4.jpg" /><br /><br /><strong>JPopupCalendar </strong><br />主页:<a href="http://www.cwroethel.com/Projects/JPopupCalendar/" target="_blank">http://www.cwroethel.com/Projects/JPopupCalendar/</a><br />Demo:<a href="http://www.cwroethel.net/Projects/JPopupCalendar/webstart/popupcalendar/SimpleExample2.jnlp" target="_blank">http://www.cwroethel.net/Projects/JPopupCalendar/webstart/popupcalendar/SimpleExample2.jnlp</a><br />最初的版本是基于Swing,目前已经有SWT的版本可供下载了.<br /><img src="http://www.cwroethel.com/Projects/JPopupCalendar/JPopupCalendar.gif" />
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/177120#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Mar 2008 09:48:27 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/177120</link>
        <guid>http://lggege.javaeye.com/blog/177120</guid>
      </item>
      <item>
        <title>Hsqldb的dump功能</title>
        <author>lggege</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lggege.javaeye.com">lggege</a>&nbsp;
          链接：<a href="http://lggege.javaeye.com/blog/176628" style="color:red;">http://lggege.javaeye.com/blog/176628</a>&nbsp;
          发表时间: 2008年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          从官网下的hsqldb.jar包是不包含dump功能的.<br /><br />在HSQL Database Manager窗口(DatabaseManagerSwing)上选择菜单dump,会看到在cmd里面都是异常,提示Transfer类不存在.进入lib/hsqldb.jar查看,在org.hsqldb.util包下,的确是没有Transfer有关的类.<br /><br />将hsqldb源代码导入Eclipse,发现,Transfer.java是有的.看来只能自己从源码导出一个jar,再使用dump功能了.<br /><br />解决源码的依赖很容易,因为,hsqldb只对servlet.jar依赖,这个在lib文件夹下可以找到.<br /><br />导出jar包后,发现,dump功能可以正常使用了.<br /><br />dump功能是可以用了,回头去查hsqldb的代码<br /><pre name="code" class="java">    static {
        try {
            Class.forName(DatabaseManagerSwing.class.getPackage().getName()
                          + ".Transfer");

            TT_AVAILABLE = true;
        } catch (Throwable t) {

            //System.err.println("Failed to get "
            //+ DatabaseManagerSwing.class.getPackage().getName()
            //+ ".Transfer: " + t);
            // Enable this print statement for debugging class access problems.
        }
    }</pre><br />哈哈,原来如此,在代码中先判断了在classpath下是否有Transfer这个类,有就将TT_AVAILABLE置为true.<br /><br />相应的,为了实现兼容性,很多应用中都有类似的代码:<br /><a href="http://lggege.javaeye.com/admin/blogs/163541" target="_blank">http://lggege.javaeye.com/admin/blogs/163541</a>
          <br/>
          <span style="color:red;">
            <a href="http://lggege.javaeye.com/blog/176628#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Mar 2008 10:08:50 +0800</pubDate>
        <link>http://lggege.javaeye.com/blog/176628</link>
        <guid>http://lggege.javaeye.com/blog/176628</guid>
      </item>
  </channel>
</rss>