遇到的問題和錯誤紀錄
註:因專案限制,必須要 Java 8,所以最高只能使用 Ojdbc8 ,不然不會有太多問題
如果 oracle 資料庫讀取的某個欄位是 xml 格式的話,必須要有下面三個套件依賴 (如果回傳資料是 xml 而不是欄位裡面資料是 xml 的話就不用第三個套件)
<project>
<dependencies>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xdb</artifactId>
<version>21.5.0.0</version>
</dependency>
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>xmlparserv2</artifactId>
<version>12.2.0.1</version>
</dependency>
</dependencies>
</project>
不然會拋出下列錯誤:
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: oracle/xml/parser/v2/XMLParseException
但是使用 Maven 裝不起來第三個套件,出現下面的錯誤:
Could not find artifact com.oracle.jdbc:xmlparserv2:pom:12.2.0.1 in central (https://repo.maven.apache.org/maven2)
上網找了很久,有些人說直接下載 jar 檔案,但是連結都失效了,在 Oracle 官網上也找不到 如果安裝 com.oracle.database.xml 的 xmlparserv2 則會出現 Parser configuration error occurred 錯誤
<dependency>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xmlparserv2</artifactId>
<version>21.5.0.0</version>
</dependency>
錯誤訊息:
Caused by: javax.xml.parsers.ParserConfigurationException: SAX feature 'http://xml.org/sax/features/external-general-entities' not supported.
解決方式
後來在 mvnrepository 上面看到 xmlparserv2_sans_jaxp_services 這個套件
<dependency>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xmlparserv2_sans_jaxp_services</artifactId>
<version>21.5.0.0</version>
</dependency>
果然,成功解決!
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com