【问题标题】:CDI deployment failure:WELD-001414 Bean name is ambiguousCDI 部署失败:WELD-001414 Bean 名称不明确
【发布时间】:2013-12-01 17:59:24
【问题描述】:

我有一个应用程序,它有多个模块和各种依赖项。当我在 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,只是一个依赖项。如何避免此异常?

我正在使用带有 JDK 1.7 和 Glassfish 4.0 的 Java EE 6。

【问题讨论】:

    标签: java maven cdi glassfish-4 weld


    【解决方案1】:

    Glassfish 已经为您打包了 Jerseys 库,因此您需要将 provided 范围添加到您的 Maven pom.xml 中,如 docs 中所述。

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    

    如果您使用任何 Jersey 特定功能,则需要直接依赖 Jersey。

    <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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 没错。一个依赖包 jersey 特定的库,这就是原因。谢谢
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        相关资源
        最近更新 更多