gpt4 book ai didi

java - 排除模块在 JBoss 7.2.1 中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:14 24 4
gpt4 key购买 nike

在我的项目中,我们使用 validation-api:1.1.0.Final 并且我们的项目是基于标准 maven web 的项目。当我将 war 部署到 JBOSS 时,出现以下错误

Caused by: java.lang.NoSuchMethodError: javax.validation.Configuration.parameterNameProvider(Ljavax/validation/ParameterNameProvider;)Ljavax/validation/Configuration;
at org.apache.cxf.validation.BeanValidationProvider.initFactoryConfig(BeanValidationProvider.java:102) [cxf-core-3.0.2.jar:3.0.2]
at org.apache.cxf.validation.BeanValidationProvider.<init>(BeanValidationProvider.java:59) [cxf-core-3.0.2.jar:3.0.2]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.6.0_27]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [rt.jar:1.6.0_27]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [rt.jar:1.6.0_27]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [rt.jar:1.6.0_27]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) [spring-beans-4.1.1.RELEASE.jar:4.1.1.RELEASE]

似乎 JBOSS 正在插入它自己的 validation-api-1.0.0.GA-redhat-2 jar,这是导致问题的原因。

我尝试将 jboss-deployment-structure.xml 文件放在 WEB-INF/目录下,但它不起作用

<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="javax.validation.api" />
</exclusions>
</deployment>
</jboss-deployment-structure>

我正在使用 JBoss EAP 6.1.1.GA (AS 7.2.1.Final-redhat-10)

专家

<!-- Validation using Annotations -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.1.Final</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>

javax模块

<module xmlns="urn:jboss:module:1.1" name="javax.validation.api">
<resources>
<resource-root path="validation-api-1.1.0.Final.jar"/>
<!-- Insert resources here -->
</resources>

<dependencies>
<module name="org.jboss.logging"/>
</dependencies>
</module>

我一直在努力度过难关。任何帮助将不胜感激。

最佳答案

您还需要排除模块 javaee.api,因为它引用了 javax.validation.api。检查 JBOSS_HOME\modules\system\layers\base\javaee\api\main\module.xml ,它会包含这个:

<module xmlns="urn:jboss:module:1.1" name="javaee.api">
<resources>
<!-- Insert resources here -->
</resources>

<dependencies>
....
<module name="javax.transaction.api" export="true"/>
<module name="javax.validation.api" export="true"/>
....

<!-- This one always goes last. -->
<module name="javax.api" export="true"/>
</dependencies>

然后在你实际需要的 jboss-deployment-structure.xml 文件中包含上面 module.xml 中列出的其他依赖项。

可以在这里找到更多详细信息: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7(引用 JBoss 部署结构文件部分)

关于java - 排除模块在 JBoss 7.2.1 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27466868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com