9

複数のモジュールとさまざまな依存関係を持つアプリケーションがあります。アプリケーションを 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 を使用しています。

4

3 に答える 3

9

Glassfish にはすでに Jerseys ライブラリがパッケージ化されているため、 docsに記載されているようにprovidedMaven にスコープを追加する必要があります。pom.xml

<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>
于 2013-11-19T09:25:22.110 に答える
1

EAR ファイルに Jersey 固有のライブラリをパッケージ化する可能性がありますか。私は、glassfish が Jersey ライブラリを提供しており、それらをパッケージ化する必要はないと考えています。

于 2013-11-18T23:00:31.717 に答える
1

同じ名前の @Named Bean クラスが 2 つあると思います。

于 2016-07-28T02:44:53.427 に答える