1. 程式人生 > >resin下發布項目報錯java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index

resin下發布項目報錯java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index

mage lan 目錄 jar 發布 () chm 項目報錯 ima

我的resin版本為4.0.56;

項目在tomcat下啟動正常,打包在resin下發布時報錯:java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

嘗試了各種解決方式,沒有滿意的;

分析問題這是一個hibernate jpa的錯誤,如果說tomcat啟動正常那麽說明你當前項目的jpa是沒有問題,那麽放到resin下發布時,有什麽不同,是不是resin

自帶了和jpa相關的jar包,那麽到resin下去看看是否有和jpa相關的jar包,果然在resin啟動時,他有自帶的jpa包;

在resion/lib/下

技術分享圖片

在javaee-16.jar下有一個javax.persistence.Table實體,這時候問題原因知道了,在resin啟動是應用了這個包下的Table實體,而在項目中用的是

hibernate-jpa-2.1-api-1.0.0.Final.jar下的Table實體,現在就是怎麽讓resin在啟動是加載hibernate-jpa-2.1-api-1.0.0.Final.jar而不是javaee-16.jar的問題,

首先在resin下新建目錄ext-lib,將hibernate-jpa-2.1-api-1.0.0.Final.jar放入其中;然後編輯resin/conf/resin.properties文件,如圖所示:技術分享圖片

編輯完成保存,再打開resin/conf/cluster-default.xml文件,進行編輯,如圖所示:

技術分享圖片

添加jvm-classpath節點,保存;

此時重啟resin發布項目不會再報java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index這個錯了.

希望對大家有用.以免踩坑

resin下發布項目報錯java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index