0

Google API OAuth2 認証のクリーンなコード サンプルを取得しようとしています。私のコードは主にhttps://code.google.com/p/google-api-java-client/wiki/OAuth2の説明に基づいています

ライブラリを Maven で管理し、Google Apps Engine に依存しないプロジェクトを作成したいので、このチュートリアルから逸脱します。

Glassfish サーバーでプロジェクトを実行しようとするたびに、依存関係の競合を示している可能性がある次のエラーが表示されます。

java.lang.NoSuchMethodError: com.google.api.client.json.JsonFactory.fromInputStream(Ljava/io/InputStream;Ljava/lang/Class;)Ljava/lang/Object;

私のpom.xmlの関連部分:

<dependencies>
    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
        <version>1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>com.google.http-client</groupId>
        <artifactId>google-http-client</artifactId>
        <version>1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>com.google.api-jackson2</groupId>
        <artifactId>google-api-jackson2</artifactId>
        <version>1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-calendar</artifactId>
        <version>v3-rev34-1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client</artifactId>
        <version>1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.1.3</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-servlet</artifactId>
        <version>1.14.1-beta</version>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.CR2</version>
    </dependency>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.1-PRD</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>jsr250-api</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
    </dependency>
</dependencies>

このエラーの根本的な原因を見つけるのを手伝ってください.

4

1 に答える 1

1

jackson2 の正しい依存関係は次のとおりです。

<dependency>        
    <groupId>com.google.http-client</groupId>
    <artifactId>google-http-client-jackson2</artifactId>
    <version>1.14.1-beta</version>
</dependency>

それを変更すると、プロジェクトは正常にビルドされ、問題のメソッドを問題なく呼び出すことができました。

クラスパスに干渉している何かがある可能性があります。でプログラムを実行することをお勧めします-verbose: class(詳細な説明については、こちらを参照してください)。これにより、競合が表示されます。

于 2013-03-28T14:21:14.207 に答える