我有一个应用程序,它有多个模块和各种依赖项。当我在 Glassfish 4 上部署应用程序时,出现错误:
org.jboss.weld.exceptions.DeploymentException: WELD-001414 Bean name is ambiguous.
Name JerseyClassAnalyzer resolves to beans: [Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer]
with qualifiers [@Default @Named @Any], Managed Bean
[class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer]
with qualifiers [@Default @Named @Any]]
可能是什么原因?我已经看到了有关此的主题,解决方案是编辑注释,但这不是我的EJB
,只是一个依赖项。如何避免此异常?
我正在使用Java EE 6和JDK 1.7和Glassfish 4.0。
Glassfish已经为你打包了Jerseys库,所以你需要按照文档中的说明将provided
范围添加到Maven pom.xml
中。
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
如果您正在使用任何泽西岛特定功能,则需要直接依赖泽西岛。
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.4.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.4.1</version>
<scope>provided</scope>
</dependency>
您是否有机会将泽西岛特定的库打包在 EAR 文件中。我相信玻璃鱼确实提供了泽西岛图书馆,你不需要打包它们。
我认为您有两个同名的@Named豆类。