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