hyhos

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            2 隨筆 :: 0 文章 :: 5 評論 :: 0 Trackbacks

          訪問AIX系統(tǒng)中部署在OC4J中的web 模塊的頁面時遇到這個錯誤:
          ??javax.xml.parsers.FactoryConfigurationError: Provider null could not be instantiated:?????????
          ????java.lang.NullPointerException
          ????????at javax.xml.parsers.SAXParserFactory.newInstance(Unknown Source)
          ????????at org.apache.commons.digester.Digester.getFactory(Digester.java:478)
          ????????at org.apache.commons.digester.Digester.getParser(Digester.java:683)
          ????????at org.apache.commons.digester.Digester.getXMLReader(Digester.java:891)
          ????????at org.apache.commons.digester.Digester.parse(Digester.java:1591)
          ????????at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1433)
          ????????at org.apache.struts.action.ActionServlet.init(ActionServlet.java:466)
          ????????at javax.servlet.GenericServlet.init(GenericServlet.java:256)
          ????????at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpApplication.loadServlet(HttpApplication.java:2231)
          ????????at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpApplication.findServlet(HttpApplication.java:4617)
          ????????……
          或者這樣的異常:
          ??
          javax.servlet.jsp.JspException: Can't get definitions factory from context.
          ?????at org.apache.struts.taglib.tiles.InsertTag.processDefinitionName(InsertTag.java:583)
          ?????at org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:487)
          ?????at org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:451)
          ?????at _welcome._jspService(_welcome.java:54)
          ?????[SRC:/welcome.jsp:4]

          ?????……
          而當(dāng)在Windows環(huán)境下部署時就沒有問題。 ?

          這里是因?yàn)?/span>IBMAIX系統(tǒng)使用的是IBMJDK。而出現(xiàn)這個問題正是因?yàn)?/span>IBMSUNJDK的差異。 具體是因?yàn)?/span> $JAVA_HOME/jre/lib/jaxp.properties 這個文件。

          這個文件以key=value的形式配置和指定實(shí)際使用的XML解析器實(shí)現(xiàn)類(譬如:javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl)。在XML解析器初始化之前,JDK首先會搜索Systemproperties尋找解析器的配置項(xiàng),如果沒有則會搜索 $JAVA_HOME/jre/lib 路徑下的 jaxp.properties 文件,如果還沒有,接下來會在classpath上的.jar包中尋找,仍然沒有的話就會使用默認(rèn)的解析器。

          實(shí)際上這個文件在SUNJDK中是不存在的。在找不到文件的情況下,最終將使用默認(rèn)解析器。在IBMJDK中存在 jaxp.properties這個文件。但是這個文件中默認(rèn)所有的配置項(xiàng)是注釋掉的,所以在搜索到此處時,不再繼續(xù)向下搜索,但是由于讀取不到配置項(xiàng),所以會返回null ,于是出現(xiàn)了上文的第一個錯誤。第二個異常大概是因?yàn)樵L問使用tiles框架的頁面時,由于XML解析器初始化出錯,所以tiles框架的配置文件也就讀取不了了。

          參考文章: Java XML API 漫談(http://robbin.javaeye.com/blog/75)

          posted on 2007-10-21 00:40 hyhos 閱讀(2429) 評論(3)  編輯  收藏 所屬分類: IT

          評論

          # re: 關(guān)于jaxp.properties的問題 2008-11-30 10:52 QQ351156739
          大哥,有什么解決辦法啊!  回復(fù)  更多評論
            

          # re: 關(guān)于jaxp.properties的問題 2008-12-09 15:46 兕塵
          我也是同樣的問題啊,有沒解決方法啊  回復(fù)  更多評論
            

          # re: 關(guān)于jaxp.properties的問題[未登錄] 2014-09-01 15:56 King
          static
          {
          // 使用SAX解析工廠
          System.setProperty("javax.xml.parsers.SAXParserFactory",
          "org.apache.xerces.jaxp.SAXParserFactoryImpl");
          // 使用DOM解析工廠
          System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
          "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
          }

          不使用jdk默認(rèn)的,直接設(shè)定為開源包xercesImpl.jar中的xml解析器。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阳东县| 汨罗市| 静安区| 大余县| 南宁市| 商丘市| 贵溪市| 桑日县| 长海县| 民县| 久治县| 芜湖县| 石台县| 临沭县| 道孚县| 三亚市| 罗城| 平远县| 井研县| 金阳县| 阳信县| 抚州市| 军事| 开封市| 介休市| 临湘市| 梅州市| 蓝山县| 兴隆县| 丹棱县| 青铜峡市| 雅安市| 南汇区| 获嘉县| 沾化县| 潮安县| 游戏| 贵港市| 江安县| 彭阳县| 怀远县|