resin下發布項目報錯java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index
我的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