Spring Boot 讀取 Oracle 資料庫 XML,套件依賴缺失 解決方式

遇到的問題和錯誤紀錄


註:因專案限制,必須要 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>
    

果然,成功解決!

留言