2017-01-17 13 views
5

Webサービス(Restful API)の作成に取り組むのは初めてです。穏やかなWebサービスのためのJava Brainsの簡単なチュートリアルに続いています。タイプの不完全な依存関係<Service>修飾子付き

  1. は、新しいサーバーをダウンロードし、それを接続: は、私は、ここでは異なる質問で検索しました物事の下に試してみました

    「@default修飾子を設定するタイプのための不満の依存関係」のようなものをというエラーを取得しています私のプロジェクトと古いサーバーを削除しました。

  2. guavaの依存関係が更新され、jarファイルがプロジェクトに追加されました。

がまだエラーに直面しています。

以下がサーバーエラーログです。

重度:例外がアプリケーションのロード中:CDI展開を 障害:WELD-001408:修飾子と を設定タイプの不満依存関係が注入点で[BackedAnnotatedConstructor] @Inject COMの [BackedAnnotatedParameter]パラメータ1 @default .google.common.util.concurrent.ServiceManager(Set) at com.google.common.util.concurrent.ServiceManager(ServiceManager.java:0) org.jboss.weld.exceptions.DeploymentException:WELD-001408: 修飾子を使用したタイプSetの満たされていない依存関係 @注入ポイントのデフォルト[BackedAnnotatedParame com.google.common.util.concurrent.ServiceManagerでTER]パラメータ@Inject com.google.common.util.concurrent.ServiceManager(セット)[BackedAnnotatedConstructor]の1 。(ServiceManager.java:0)

これはデータを提供するstudentserviceクラスです。

public class StudentService { 
    public List<Student> getAllData() { 
     Student s1 = new Student(1, "Sagar", 20); 
     Student s2 = new Student(2, "Puneet", 23); 
     List<Student> list = new ArrayList<>(); 
     list.add(s1); 
     list.add(s2); 
     return list; 
    } 
} 

は以下

@Path("/myfirstapi") 
public class MyFirstAPI { 
StudentService ss=new StudentService(); 
@GET 
@Produces(MediaType.APPLICATION_XML) 
public List<Student> gettext() { 
    return ss.getAllData(); 
    } 
} 
+0

コードなどの情報がなくても、アドバイスは非常に難しいです。 – hotzst

+0

@hotzstコードが追加されました。他に必要な場合はお知らせください。私はどこで私はstudentserviceクラスからデータを取得するメソッドを使用して基本的なAPIの例を作成しようとしています。 –

答えて

4

このエラーの原因は通常、グアバの悪いバージョンである私のAPIクラスです。 Guava <のバージョンを使用している可能性があります。クラスパスを確認する必要があります。

私は2つのソリューション見ることができます:あなたがCDI(あなたがしていないようです)、バージョンエルス> = 16

  • (場合beans.xmlのを削除CDIを無効とグァババージョンを更新を使用している場合

    • をクラスパスに存在し、アプリケーションサーバーで暗黙のスキャンを無効にします)。
  • +1

    これは私を助けました。素晴らしい:16 ' \t \t \t com.google.guava \t \t \t グアバ \t \t \t 16.0 \t \t' – ashlrem

    +1

    @ashlremに私のグアバのバージョンを更新!この問題が解決された場合は、アップしてください:-) – Rouliboy

    1

    おそらくあなたのウェブサーバーには既にグアバライブラリが含まれており、問題はありません。だからあなたが必要とするのは、あなたのguavaライブラリがwarファイルに入らないようにすることです。一部の人は(Using Jersey 2.1 with CDI)、その

    を提供する(グアバ依存関係を設定する)だけで問題が解決されると言います。私はグアバを引っ張っているものを、見つけるためにgradle dependenciesを走っていない最後に、私はグアバを確認するために私の戦争を検討しなくなった

    compileOnly 'org.glassfish.jersey.core:jersey-client:2.0.1' 
    

    まず:私は、私はcompileOnlyセットに依存性を置くのGradleを使用

    そこ。

    +0

    もちろん、これはローカル展開サーバーにも依存関係が既に含まれている場合にのみ有効です。それ以外の環境では動作しますが、ローカルでは動作しません。 – testuser

    関連する問題