我有使用 Jersey REST 的 .war,它可以在 tomCat 中运行。但我需要在 JBoss 6.4.0 中运行我的 .war,这会导致异常
java.lang.RuntimeException: java.lang.NoSuchMethodError:
javax.validation.spi.ConfigurationState.getParameterNameProvider()
因为 JBoss 使用旧版本的 javax.validation,并且我需要从 JBoss 的部署中排除 javax.validation。
我创造jboss-部署-结构.xml在 .war 的 WEB-INF 中:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="resteasy" />
<subsystem name="jpa"/>
<subsystem name="org.hibernate" />
<subsystem name="org.hibernate.validator" />
</exclude-subsystems>
<exclusions>
<module name="javaee.api" />
<module name="javax.ws.rs.api"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="javax.validation.api"/>
<module name="org.hibernate"/>
<module name="org.hibernate.validator"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
这帮助我排除了 javax.ws.rs,但是如何排除 javax.validation?请帮帮我
好的,所以您不仅需要排除
<module name="javax.validation.api"/>
本身,以及依赖于 javax.validation.api 模块的模块。查看哪些模块依赖于 javax.validation.api 并强制将其包含在内(即使已排除)的最简单方法是在以下位置搜索 .xml 文件:
javax.validation.api 的 JBOSS_DIRECTORY/modules,依赖的模块在 module.xml 中具有类似的内容:
<dependencies>>
<module name="javax.validation.api"/>
...
这些模块也需要被排除。对我来说 - 我还需要排除:
<module name="javax.faces.api"/>
<module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>
然后,javax 验证排除就开始工作了:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)