1. 程式人生 > >Spring Boot2 + JDK11使用筆記(不定期更新)

Spring Boot2 + JDK11使用筆記(不定期更新)

下面描述的問題和解決方法全部基於Gradle構建,Maven使用者自行轉換

異常處理

  • Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 啟動出現這個錯誤的原因和JDK9相同,在JDK9開始已經移除了相關程式碼。Spring官方已經給出解決方法看這裡 解決辦法: 新增依賴項,由於Spring官方給出的方法在某些依賴複雜的專案(主要是hibernate依賴相關)中依然會出現其他NoClassDefFoundError的異常,可以新增如下依賴可以基本解決。
    runtime 'javax.xml.bind:jaxb-api:+'
    runtime 'com.sun.xml.bind:jaxb-impl:+'
    runtime 'com.sun.xml.bind:jaxb-core:+'
    runtime 'javax.activation:activation:+'
  • Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 出現這個問題是因為當前Spring Boot版本依賴的hibernate不支援JDK11。具體hibernate官網已經已經列出了一些問題和解決方法。看這裡 解決辦法: 升級hibernate依賴
    compile('org.springframework.boot:spring-boot-starter-data-jpa'){
        // 當存在子專案引用時可能需要排除依賴避免衝突
        exclude module: 'hibernate-core'
    }
    compile 'org.hibernate:hibernate-core:5.3.7.Final'