CDI部署失败:WELD-001414 Bean名称不明确

我有一个应用程序,它有多个模块和各种依赖项。 当我在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 ,只是一个依赖项。 我怎样才能避免这种exception?

我正在使用Java EE 6与JDK 1.7和Glassfish 4.0。

Glassfish已经为您打包了Jerseys库,因此您需要按照文档中的说明将provided范围添加到Maven pom.xml中。

  javax.ws.rs javax.ws.rs-api 2.0 provided  

如果您使用任何泽西岛特定function,您将需要直接依赖泽西岛。

  org.glassfish.jersey.containers jersey-container-servlet 2.4.1 provided  
  org.glassfish.jersey.core jersey-client 2.4.1 provided  

您是否有机会在您的EAR文件中打包Jersey特定库。 我相信glassfish确实提供了Jersey库,你不需要打包它们。

我想你有两个同名的@Named bean类。