Java 防止Glassfish使用自己版本的库而不是项目中的库
Glassfish在其Java 防止Glassfish使用自己版本的库而不是项目中的库,java,glassfish,pom.xml,glassfish-4,Java,Glassfish,Pom.xml,Glassfish 4,Glassfish在其模块目录中存储了大量的第三方库。令我惊讶的是,如果我的项目使用了一个存在于那里的库,Glassfish将从那里提供它,而不是我在WAR文件中打包的正确版本 这会导致许多错误。例如,我使用了jackson数据类型jodaversion 2.6.3,它要求jackson数据绑定具有相同的版本,并且它包含在我的项目中。但是Glassfish用版本2.3.2替换了这个包,这导致了 如何防止Glassfish(4.1)用其他版本替换我使用的库?将Glassfish-web.xml文件
模块
目录中存储了大量的第三方库。令我惊讶的是,如果我的项目使用了一个存在于那里的库,Glassfish将从那里提供它,而不是我在WAR文件中打包的正确版本
这会导致许多错误。例如,我使用了jackson数据类型joda
version 2.6.3,它要求jackson数据绑定
具有相同的版本,并且它包含在我的项目中。但是Glassfish用版本2.3.2替换了这个包,这导致了
如何防止Glassfish(4.1)用其他版本替换我使用的库?将Glassfish-web.xml文件添加到web-INF目录,其中包含以下内容:
<glassfish-web-app>
<class-loader delegate="false" />
</glassfish-web-app>
这将确保在服务器类路径加载之前从war加载类我尝试了它,并在部署时得到:
加载应用程序时出现异常:CDI部署失败:实例化类org.hibernate.validator.internal.CDI.ValidationExtension java.lang时出错异常:实例化类时出错org.hibernate.validator.internal.cdi.ValidationExtension
,然后stacktrace:org.glassfish.grizzly,出现问题,原因是:java.lang.AbstractMethodError位于org.hibernate.validator.internal.cdi.ValidationExtension.(ValidationExtension.java:91)
@MikhailBatcer您解决问题了吗?我也在为同样的事情而斗争。@AngelAvila如果我没记错的话,我必须在Glassfishmodules
目录中重新命名冲突的旧库,最后添加.bak
(或类似的smth来备份它们。也许移动到bak
文件夹会更好),然后在这些库中放置我需要的版本。新库的名称应该与旧库的名称完全相同。@MikhailBatcer不是一个真正的解决方案,而是一个解决方案say@ErdincAy我太懒了,没有时间发布错误报告。也许这会给出一个真正的解决办法。