NoSuchMethodError:JsonFactory.fromInputStream

时间:2013-03-28 13:32:29

标签: java maven glassfish jackson google-api-java-client

我正在尝试获取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>

请帮我找出这个错误的根本原因,因为使用过的依赖关系对我来说似乎没问题,而且我找不到类似的问题。

1 个答案:

答案 0 :(得分:1)

jackson2的正确依赖是:

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

一旦我改变了,项目就成功建立了,我能够很好地调用这个方法。

类路径上可能还有其他东西在干扰。我建议您使用-verbose: class运行该程序(有关详细说明,请参阅here),这将显示任何冲突。