我正在尝试获取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>
请帮我找出这个错误的根本原因,因为使用过的依赖关系对我来说似乎没问题,而且我找不到类似的问题。
答案 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),这将显示任何冲突。