9

Google Appengine Eclipseプラグインを使用してエンドポイントを生成する際に、奇妙な動作が発生しています。私は20以上のエンドポイントメソッドを持つエンドポイントクラスを持っています。私は最初のアンドロイドのためのエンドポイント私は、トラブルシューティングの方法により、エラーGoogle EclipseプラグインによるGoogleクラウドエンドポイントでのメソッドの干渉

Generating Cloud Endpoint has encountered errors and is not complete 

を得るを生成しようとしたとき、私は犯人を見つけるために、すべてのメソッドをコメントアウトします。私が見つけたのは少しばかげたことです。 16番目のメソッドのコメントを外した後、再びエラーが発生します。お互いに干渉する2つの方法があります!私がどちらか一方をコメントアウトすると、エンドポイントは正常に生成されます。しかし、私は両方のコメントを外している場合、私は上記のエラーが表示されます。

この干渉を引き起こす原因は誰にも分かりますか?

@ApiMethod(name = "getOrangers", httpMethod = HttpMethod.POST) 
public FaceList getOrangers(UserRequest request) throws NotFoundException { 
    FaceList list = new FaceList(); 
    return list; 
} 

@ApiMethod(name = "getMangoers", httpMethod = HttpMethod.POST) 
public FaceList getMangoers(UserRequest request) throws NotFoundException { 
    FaceList list = new FaceList(); 
    return list; 
} 

私は上記のようにスタブにメソッドを編集しても、同じ干渉の問題が発生します。

まず

答えて

33

、あなたがその迷惑なundescriptiveメッセージでエラーを取得するとき:

生成クラウドエンドポイントは、あなたは下エラーログを確認する必要があり、エラーが発生したため、

を完了されていません詳細情報を取得するWindow -> Show View -> Error Log


は、私はそのようにした、と私は、実際の例外があることがわかった。

java.lang.IllegalArgumentException: 
    Multiple methods with same rest path "POST facelist": "getOrangers" and "getMangoers" 

ので、問題はあなたの2つの方法が同じパスを持っているということです!明示的にあなたの方法のパスを追加し、問題を解決します:

@ApiMethod(name="getOrangers", path="get_oranges", httpMethod=HttpMethod.POST) 
public FaceList getOrangers(UserRequest request) throws NotFoundException { 
    //... 
} 

@ApiMethod(name="getMangoers", path="get_mangoers", httpMethod=HttpMethod.POST) 
public FaceList getMangoers(UserRequest request) throws NotFoundException { 
    //... 
} 

:あなたはあなたの方法のためのパスを設定しなかったとして、GPEが自動的に生成されます。 GPEは2つの方法で同じ方法を使用しており、HTTPメソッド(POST)と返された値(フェイスリスト)のパスを作成していると思われます。これはGoogle Cloud Endpoints Documentation

パス:このメソッドにアクセスするために使用するURIのパスあなたは これを設定しない場合、デフォルトのパスは、Java メソッド名に基づき使用されている。」

パスにはメソッド名を使用して自動的に生成され、その場合は2つのメソッドには明らかに異なる名前があるため、エラーは発生しません。だから、エンドポイントのバグ(他の​​ものと同じくらい)でなければなりません。

+0

うわー!私はあなたの返信がたくさん得られることを願っています!票を集める'ウィンドウ - >表示の表示 - >エラーログ'だけで素晴らしいです!どうもありがとうございます! +1とチェック!私がその質問をしたとき、私は実際に答えを得ることができなかった。私は完全に立ち往生して以来、とにかく尋ねました。 – learner

+0

問題はありません@リナー、私はそれが助けてうれしい!私はすでに*トリック*を前に提案していました(http://stackoverflow.com/questions/15945554/can-i-return-a-generic-in-google-cloud-end-point/15946690#15946690)そして実際には私にそれを提案した[at] bossylobster(http://stackoverflow.com/questions/15684837/eclipse-doesnt-generate-google-cloud-endpoint-client-library/15684863#15684863)upvotesに関しては、私はこのようなタグはあまりにも多くのフォロワーを持たないので、そうは思わない: – MikO

+0

補完: https://cloud.google.com/appengine/docs/java/endpoints/paramreturn_types#path_parameters – GFPF

関連する問題