顯示具有 dom4j 標籤的文章。 顯示所有文章
顯示具有 dom4j 標籤的文章。 顯示所有文章

2014年7月18日 星期五

java.lang.ArrayIndexOutOfBoundsException: 48188

莫名其妙遇到的問題....錯誤訊息如下:

嚴重: StandardWrapper.Throwable
java.lang.ArrayIndexOutOfBoundsException: 48188
        at org.objectweb.asm.ClassReader.readClass(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at com.sun.jersey.spi.scanning.AnnotationScannerListener.onProcess(AnnotationScannerListener.java:136)
        at com.sun.jersey.core.spi.scanning.JarFileScanner.scan(JarFileScanner.java:97)
        at com.sun.jersey.spi.scanning.servlet.WebAppResourcesScanner$1.f(WebAppResourcesScanner.java:94)
        at com.sun.jersey.core.util.Closing.f(Closing.java:71)
        at com.sun.jersey.spi.scanning.servlet.WebAppResourcesScanner.scan(WebAppResourcesScanner.java:92)
        at com.sun.jersey.spi.scanning.servlet.WebAppResourcesScanner.scan(WebAppResourcesScanner.java:79)
        at com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:80)
        at com.sun.jersey.api.core.servlet.WebAppResourceConfig.init(WebAppResourceConfig.java:102)
        at com.sun.jersey.api.core.servlet.WebAppResourceConfig.<init>(WebAppResourceConfig.java:89)
        at com.sun.jersey.api.core.servlet.WebAppResourceConfig.<init>(WebAppResourceConfig.java:74)
        at com.sun.jersey.spi.container.servlet.WebComponent.getWebAppResourceConfig(WebComponent.java:668)
        at com.sun.jersey.spi.container.servlet.ServletContainer.getDefaultResourceConfig(ServletContainer.java:415)
        at com.sun.jersey.spi.container.servlet.ServletContainer.getDefaultResourceConfig(ServletContainer.java:582)
        at com.sun.jersey.spi.container.servlet.WebServletConfig.getDefaultResourceConfig(WebServletConfig.java:87)
        at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:699)
        at com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
        at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:203)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
        at javax.servlet.GenericServlet.init(GenericServlet.java:158)
        at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)

找來找去找不太到相關的資料,好不容易找到 [1],顯示錯誤原因似乎是使用 Maven 時加上了 Jaxen 這個 dependency。
不過這個 dependency 是 dom4j 在操作 XPath 時要用的 ~"~
先記錄一下,也許可能的解法是不要用 XPath 來存取 XML 內容....。

參考資料:
1、较少遇到的错误—严重: StandardWrapper.Throwable—java.lang.ArrayIndexOutOfBoundsException: 48188

2012年4月20日 星期五

Invalid byte 1 of 1-byte UTF-8 sequence.

今天遇到 dom4j 丟出以下的 Exception

org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.

查了一下網路之後,得到的結果是因為讓 dom4j 的 SAXReader 讀取 XML 時
XML 在標頭宣告自己的編碼是 UTF-8,但實際上檔案儲存時並不是用 UTF-8。
後來發現我用 NotePad++ 儲存的 XML 檔忘了選編碼了
要在 NotePad++ 的工具列上選 [編碼][編譯成 UTF-8 碼] 或者 [編譯成 UTF-8 碼 (檔首無 BOM)]

2012年3月20日 星期二

在 Java 中寫入 XML 檔案:使用 dom4j

dom4j 官方網站:http://dom4j.sourceforge.net/
在 Java 存取 XML 的方法好像有不少,會選 dom4j 是因為據說它效率還不錯,而且用法簡單!

以下直接舉一個寫入 XML 的例子
我是先建立一個 XMLConstructor 的 Class,然後在 main 去呼叫它~