You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven编译报错:找不到jackson2.JacksonFactory符号(Google Sheets API场景)

解决Maven编译Google Sheets API时cannot find symbol jackson2.JacksonFactory错误

嘿,我来帮你搞定这个编译报错的问题!你遇到的cannot find symbol jackson2.JacksonFactory错误,本质是Maven依赖里缺了Jackson 2.x的相关支持库,下面一步步给你解决:

问题回顾

你尝试通过Maven集成Google Sheets API,但编译时触发了找不到JacksonFactory类的错误,先把你的项目信息整理清楚:

你的pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>BotSheets</groupId> 
<artifactId>b</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
<name>b</name> 
<url>http://maven.apache.org</url> 
<build> 
<plugins> 
<plugin> 
<!-- Build an executable JAR --> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-jar-plugin</artifactId> 
<version>3.1.0</version> 
<configuration> 
<archive> 
<manifest> 
<addClasspath>true</addClasspath> 
<classpathPrefix>lib/</classpathPrefix> 
<mainClass>BotSheets.b.GoogleSheetAPI</mainClass> 
</manifest> 
</archive> 
</configuration> 
</plugin> 
</plugins> 
</build> 
<properties> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
<maven.compiler.source>1.8</maven.compiler.source> 
<maven.compiler.target>1.8</maven.compiler.target> 
</properties> 
<dependencies> 
<dependency> 
<groupId>junit</groupId> 
<artifactId>junit-dep</artifactId> 
<version>4.11</version> 
</dependency> 
<dependency> 
<groupId>com.google.api-client</groupId> 
<artifactId>google-api-client</artifactId> 
<version>1.22.0</version> 
</dependency> 
<dependency> 
<groupId>com.google.oauth-client</groupId> 
<artifactId>google-oauth-client-jetty</artifactId> 
<version>1.22.0</version> 
</dependency> 
<dependency> 
<groupId>com.google.apis</groupId> 
<artifactId>google-api-services-sheets</artifactId> 
<version>v4-rev483-1.22.0</version> 
</dependency> 
<dependency> 
<groupId>org.testng</groupId> 
<artifactId>testng</artifactId> 
<version>6.10</version> 
</dependency> 
<dependency> 
<groupId>org.seleniumhq.selenium</groupId> 
<artifactId>selenium-java</artifactId> 
<version>3.4.0</version> 
</dependency> 
</dependencies> 

项目目录结构

├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── BotSheets
│   │   │       └── b
│   │   │           ├── client_secret.json
│   │   │           └── GoogleSheetAPI.java
│   └── test
│       ├── java
│       │   └── BotSheets
│       │       └── b
│       │           └── AppTest.java

核心代码片段

package BotSheets.b; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.Arrays; 
import java.util.List; 

import com.google.api.client.auth.oauth2.Credential; 
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; 
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; 
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; 
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; 
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 
import com.google.api.client.util.store.FileDataStoreFactory; 
import com.google.api.services.sheets.v4.Sheets; 
import com.google.api.services.sheets.v4.SheetsScopes; 
import com.google.api.services.sheets.v4.model.ValueRange; 

public class GoogleSheetAPI { 
    /** Application name. */ 
    private static final String APPLICATION_NAME = "Google Sheets API Java Quickstart"; 

    /** Directory to store user credentials for this application. */ 
    private static final java.io.File DATA_STORE_DIR = new java.io.File( 
            System.getProperty("user.home"), ".credentials/sheets.googleapis.com-java-quickstart"); 

    /** Global instance of the {@link FileDataStoreFactory}. */ 
    private static FileDataStoreFactory DATA_STORE_FACTORY; 

    /** Global instance of the JSON factory. */ 
    private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 

    /** Global instance of the HTTP transport. */ 
    private static HttpTransport HTTP_TRANSPORT; 

    /** Global instance of the scopes required by this quickstart. 
     * 
     * If modifying these scopes, delete your previously saved credentials 
     * at ~/.credentials/sheets.googleapis.com-java-quickstart */ 
    private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS_READONLY); 

    static { 
        try { 
            HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); 
            DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR); 
        } catch (Throwable t) { 
            t.printStackTrace(); 
            System.exit(1); 
        } 
    }
    // 剩余代码省略
}

具体解决步骤

1. 添加缺失的Jackson2依赖

JacksonFactory类并不在基础的google-api-client包里,而是属于google-api-client-jackson2模块。你需要在pom.xml的<dependencies>块中加入这个依赖:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client-jackson2</artifactId>
    <version>1.22.0</version>
</dependency>

注意版本要和你现有的google-api-client版本保持一致(这里是1.22.0),避免版本冲突。

2. 重新编译项目

添加依赖后,执行Maven的清理编译命令:

mvn clean compile

这样应该就能顺利找到JacksonFactory类了。


额外小贴士

  • 版本统一:所有Google相关的依赖尽量保持相同版本,不然很容易出现奇怪的兼容性问题。
  • 清理缓存:如果还是有依赖问题,可以试试强制更新Maven依赖:
mvn clean install -U
  • 检查导入:确认代码里的import com.google.api.client.json.jackson2.JacksonFactory;没有拼写错误,比如少打了字母之类的。

内容的提问来源于stack exchange,提问作者yeo4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:58:43