欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Quarkus改造Pmml模型項目異常記錄及解決處理

 更新時間:2022年02月23日 10:34:43   作者:kl  
這篇文章主要為大家介紹了Quarkus改造Pmml模型項目是遇到的異常記錄以及解決方法,有需要的同學可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

前言

這個項目是一個PMML模型跑分系統(tǒng),在使用quarkus架構對其改造的過程中,在加載PMML模型時,拋了一個異常,在網(wǎng)上找了很多資料都沒有解決,pmml項目的issue中也沒有找到相關的內(nèi)容,故在此記錄下,給遇到問題的你做個參考

jpmml-evaluator:https://github.com/jpmml/jpmml-evaluator

異常如下:

java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" of type javax.xml.namespace.QName, the class loader io.quarkus.bootstrap.classloading.QuarkusClassLoader @58fd1214 (instance of io.quarkus.bootstrap.classloading.QuarkusClassLoader, child of 'platform' jdk.internal.loader.ClassLoaders$PlatformClassLoader) of the current class, com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl, and the class loader 'bootstrap' for the field's defining type, javax.xml.datatype.DatatypeConstants, have different Class objects for type javax.xml.namespace.QName
	at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:254)
	at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:33)
	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:98)
	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:54)
	at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:132)
	at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:62)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:425)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:273)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:109)
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1126)
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:135)
	at com.sun.xml.bind.v2.JAXBContextFactory.createContext(JAXBContextFactory.java:35)
	at javax.xml.bind.ContextFinder.find(ContextFinder.java:393)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
	at org.jpmml.model.JAXBUtil.getContext(JAXBUtil.java:103)
	at org.jpmml.model.JAXBUtil.createUnmarshaller(JAXBUtil.java:143)
	at org.jpmml.evaluator.LoadingModelEvaluatorBuilder.load(LoadingModelEvaluatorBuilder.java:88)
	at org.jpmml.evaluator.LoadingModelEvaluatorBuilder.load(LoadingModelEvaluatorBuilder.java:78)
	at org.jpmml.evaluator.LoadingModelEvaluatorBuilder.load(LoadingModelEvaluatorBuilder.java:66)

解決

最后發(fā)現(xiàn)是一個依賴的jar包中帶的一個依賴stax-api導致的問題,實際上并沒有使用到這個依賴,所以排除即可

<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.6.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>stax-api</artifactId>
                    <groupId>stax</groupId>
                </exclusion>
            </exclusions>
        </dependency>

解決思路

剛看到這個異常時,沒有啥想法,加載程序約束沖突,這個還是頭一次見,后面就在PMML的github倉庫上找issue里的關鍵信息,一無所獲。最后把異常message放google上搜到了兩條關鍵信息,如下:

信息一:https://youtrack.jetbrains.com/issue/JT-7922

信息二:https://serverfault.com/questions/401890/

其中,信息一的異常匹配度非常高,達到了100%的異常消息匹配,但是沒有說解決方案,信息二雖然也沒給出具體的方案,但是談到了可能是jar依賴沖突導致,這個給了我靈感,最后經(jīng)過嘗試驗證,把stax-api這個jar找出來了。

stax-api百科

XML流API(Streaming API for XML,縮寫StAX)是用于讀寫XML文檔的應用程序接口,起源于Java社群,JSR 173定義了這個API。

傳統(tǒng)上來說,XML的API無外乎是以下兩種:

  • 基于樹的API- 整個文檔以樹的形式被讀入內(nèi)存,可以被調用程序隨機訪問。
  • 基于事件的API - 應用注冊接收事件,當原XML文檔遇到事體時就會產(chǎn)生這些事件。

兩者皆有優(yōu)點,前者(例如DOM)允許對文檔進行隨機訪問,而后者(例如SAX)需要較小的內(nèi)存開銷,并卻通常更快。

這兩個方法可以認為是正好相反?;跇涞腁PI允許無限制的,隨機的訪問和操縱,而基于事件的API是一次性地遍歷源文檔。

StAX被設計為這兩者的一個折中。在StAX中,程序的切入點是表示XML文檔中一個位置的光標。應用程序在需要時向前移動光標,從解析器拉出信息。

與基于事件的API(如SAX)將“數(shù)據(jù)推送”給應用程序不同的是,SAX需要應用程序維持時間間的狀態(tài),以保持文檔內(nèi)的位置信息。

總結

基于stax-api百科的信息,在結合異常信息,這個異常算終于水落石出了,可以判斷出,這個jar的功能已經(jīng)被包含進jdk中了,所以添加進新的進來就導致沖突了

以上就是Quarkus改造Pmml模型項目異常記錄及解決的詳細內(nèi)容,更多關于Quarkus改造Pmml模型項目異常的資料請關注腳本之家其它相關文章!

相關文章

  • 淺談springboot內(nèi)置tomcat和外部獨立部署tomcat的區(qū)別

    淺談springboot內(nèi)置tomcat和外部獨立部署tomcat的區(qū)別

    這篇文章主要介紹了淺談springboot內(nèi)置tomcat和外部獨立部署tomcat的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 淺析Java如何優(yōu)雅的避免那無處不在的空指針異常

    淺析Java如何優(yōu)雅的避免那無處不在的空指針異常

    在Java編程語言中,NullPointerException(簡稱NPE)是一種常見的運行時異常,本文主要來和大家講講如何優(yōu)雅的避免這些空指針異常,需要的可以參考下
    2024-03-03
  • 詳解Spring mvc DispatchServlet 實現(xiàn)機制

    詳解Spring mvc DispatchServlet 實現(xiàn)機制

    本篇文章主要介紹了詳解Spring mvc DispatchServlet 實現(xiàn)機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • IDEA插件FindBugs的使用詳解

    IDEA插件FindBugs的使用詳解

    這篇文章主要介紹了IDEA插件FindBugs的使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    Java實現(xiàn)企業(yè)微信消息推送功能的詳細步驟

    這篇文章主要介紹了Java實現(xiàn)企業(yè)微信消息推送功能,本文圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • java 中ThreadLocal 的正確用法

    java 中ThreadLocal 的正確用法

    這篇文章主要介紹了java 中ThreadLocal 的正確用法的相關資料,需要的朋友可以參考下
    2017-03-03
  • Java向List集合中批量添加元素的實現(xiàn)方法

    Java向List集合中批量添加元素的實現(xiàn)方法

    這篇文章主要介紹了Java向List集合中批量添加元素的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java遍歷Map對象集合的六種方式代碼示例

    Java遍歷Map對象集合的六種方式代碼示例

    Java中的Map是一種鍵值對映射的數(shù)據(jù)結構,它提供了一些常用的方法用于獲取、添加、刪除和修改元素,下面這篇文章主要給大家介紹了關于Java遍歷Map對象集合的六種方式,需要的朋友可以參考下
    2024-02-02
  • Java線程之間的共享與協(xié)作詳解

    Java線程之間的共享與協(xié)作詳解

    這篇文章主要介紹了Java線程之間的共享與協(xié)作詳解,進程是操作系統(tǒng)進行資源分配的最小單位,線程是進程的一個實體,是CPU調度和分派的基本單位,它是比經(jīng)常更小的、能夠獨立運行的基本單位
    2022-07-07
  • Java 入門圖形用戶界面設計之單選按鈕

    Java 入門圖形用戶界面設計之單選按鈕

    圖形界面(簡稱GUI)是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受,本篇精講Java語言中關于圖形用戶界面的單選按鈕
    2022-02-02

最新評論