【问题标题】:Prevent Glassfish from using its own versions of libraries instead of those in a project防止 Glassfish 使用自己的库版本而不是项目中的库
【发布时间】:2016-05-26 00:59:55
【问题描述】:

Glassfish 在其modules 目录中存储了大量第三方库。令我惊讶的是,如果我的项目使用了那里存在的库,Glassfish 将从那里提供它,而不是我在我的 WAR 文件中打包的正确版本。

这会导致许多错误。例如,我使用jackson-datatype-joda 2.6.3 版本,它要求jackson-databind 具有相同的版本,并且它包含在我的项目中。但是 Glassfish 用 2.3.2 版本替换了那个包,这导致了this issue

如何防止 Glassfish (4.1) 将我使用的库替换为其他版本?

【问题讨论】:

    标签: java glassfish pom.xml glassfish-4


    【解决方案1】:

    将 glassfish-web.xml 文件添加到您的 WEB-INF 目录,其中包含类似的内容,

    <glassfish-web-app>
      <class-loader delegate="false" />
    </glassfish-web-app>
    

    这将确保在服务器类路径之前从您的战争中加载类

    【讨论】:

    • 我试过了,我在部署时得到:Exception while loading the app : CDI deployment failure:Error instantiating class org.hibernate.validator.internal.cdi.ValidationExtension java.lang.RuntimeException: Error instantiating class org.hibernate.validator.internal.cdi.ValidationExtension ,然后是 stacktrace:org.glassfish.grizzly,Caused by: java.lang.AbstractMethodError at org.hibernate.validator.internal.cdi.ValidationExtension.&lt;init&gt;(ValidationExtension.java:91)
    • @MikhailBatcer 你解决了你的问题吗?我正在与同样的事情作斗争。
    • @AngelAvila 如果我没记错的话,我不得不在 Glassfish modules 目录中重命名冲突的旧库,最后添加 .bak(或者类似的东西来备份它们。也许移动到 bak文件夹更好),然后把我需要的版本的库放在那里。新库的名称应与旧库完全相同。
    • @MikhailBatcer 并不是真正的解决方案,而是我想说的解决方法
    • @ErdincAy 我太懒了,没有时间发布错误报告。可能这会给出一个真正的解决方案。
    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多