Resin4.0.55+MyEcl部署后报java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persisten

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42571004/article/details/100584692

最近在整合MyEclipse+Resin4.0。在不部署项目时。能够正常启动访问Redis
在这里插入图片描述
部署项目之后报

java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persisten

在Resin中直接启动还是报错,各种查阅资料,分析问题这是一个hibernate jpa的错误,
在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上启动项目能够解决报错。但是在MyEclipse中是不适用的。
会报另一个错误:

javax.xml.parsers.FactoryConfigurationError: Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found

后发现是在

在这里插入图片描述
xml.apis冲突了。在项目中的ilb目录找到删除它既可以运行。
另外在Resin4.0后可以在conf/redin.xml文件中加入

<class-loader>
    <servlet-hack/>
  </class-loader>```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190906183605112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjU3MTAwNA==,size_16,color_FFFFFF,t_70)
就能解决Hibernate冲突问题,不需要再改动上面将的两个文件配置Hibernate。

猜你喜欢

转载自blog.csdn.net/weixin_42571004/article/details/100584692