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

1.問題描述

我的resin版本爲4.0.55;

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

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

自帶了和jpa相關的jar包,那麼到resin下去看看是否有和jpa相關的jar包,果然在resin啓動時,因爲配置原因,將Hibernate的jpa包複製到了resin/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的問題

2.解決方法

首先在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這個錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章