ravenix

          魚如何控制自己的呼吸
          posts - 7, comments - 3, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2005年8月26日

          Eclipse 應(yīng)用可以使用Java Web Start部署,實現(xiàn)Rich Client。

          這要求把所有的插件打包成獨(dú)立的jar,并且要簽署它。

          如果要用到別人開發(fā)的java庫,就要利用eclipse提供的Create a plug-in project from existing JAR archives 把它做成 eclipse plugin。

          Apache Jakarta有許多項目使用了commons-logging來寫log。如果用到了這樣的項目,你也需要把commons-logging做成一個 plugin。但是commons-logging在使用eclispe plugin包裝并使用Java Web Start部署時,它會拋出異常

          LogConfigurationException : Invalid class loader hierarchy. You have more than one version of org.apache.commons.logging.Log visible, which is not allowed.

          究其原因,是JCL(Jakarta Commons Logging)中一直存在的classloader問題。

          簡單來說,JCL使用調(diào)用者的classloader加載Log接口,這是最常見的類載入方法;但是加載具體的實現(xiàn)類是,用的是thread context classloader。

          通常情況下,這兩個classloader是同一個。但是Eclipse有一套插件類加載機(jī)制,每個插件使用不同的 classloader。在這個例子中,加載Log接口是EclipseClassLoader,加載Log實現(xiàn)類的thread context classloader是JNLPClassLoader,它們并不相同。問題就來了,用不同classloader加載的類被認(rèn)為是無關(guān)的,所以JCL 的實現(xiàn)類不能賦給Log接口類,就會拋出那個異常。

          關(guān)于JCL classloader問題更詳細(xì)解釋,請看log4j的創(chuàng)始人之一,Ceki Gülcü寫的文章

          為了解決這個問題,我啟動了一個項目,jcleclipse -- 重寫了JCL,固定實現(xiàn)為把所有的log寫到eclipse自己的ILog里。這樣就不用要求用戶在某個指定的地方建目錄來存儲log。

          jcleclipse項目主頁 http://jcleclipse.sourceforge.net/
          jcleclipse項目概要 http://sourceforge.net/projects/jcleclipse

          posted @ 2005-09-09 14:30 ravenix 閱讀(1266) | 評論 (1)編輯 收藏

          如果用digister處理的xml里包含了外部dtd指定,即在!DOCTYPE中用PUBLIC指定外部dtd,即使使用了

          digester.setValidating(false);

          底層的sax解析器xerces仍然會去指定的地址去加載DTD,特別地,如果指定的地址無法獲得DTD,就會拋出異常:
          SAXException: The markup declarations contained or pointed to by the document type declaration must be well-formed

          為了避免這個問題,可以使用這樣的語句:
          digester.setValidating(false);
          digester.setFeature(
          "http://apache.org/xml/features/nonvalidating/load-external-dtd",false);

          當(dāng)然這個設(shè)置只有在底層的sax解析器是xerces才有效。如果你使用的是其它的sax解析器,請參考解析器的文檔。

          posted @ 2005-08-30 15:57 ravenix 閱讀(1069) | 評論 (0)編輯 收藏

          目前所知道的
          apache xerces 支持中文元素
          saxon自帶的aelfred 不支持

          posted @ 2005-08-26 16:04 ravenix 閱讀(508) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 井研县| 台北市| 吉水县| 吴旗县| 嘉鱼县| 三河市| 莆田市| 凌海市| 鱼台县| 射洪县| 比如县| 甘泉县| 墨江| 革吉县| 泗洪县| 永城市| 雷波县| 自治县| 长宁县| 鲁山县| 金寨县| 文安县| 米林县| 社旗县| 凤阳县| 永和县| 通海县| 安福县| 靖州| 黄冈市| 特克斯县| 榆社县| 蓝山县| 罗城| 左权县| 石渠县| 金平| 平谷区| 太仓市| 上高县| 沙坪坝区|