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

Spring Maven项目集成Google Calendar API时build.gradle文件报错

解决Spring项目集成Google Calendar API时的Gradle构建错误

问题情况

我在Spring项目里尝试集成Google Calendar API,跟着官方步骤操作,但执行命令gradle -q run时出现了错误:

位置:构建文件 'C:\Users\Owner\Documents\workspace\Project\build.gradle' 第17行
问题:评估根项目'Project'时出错。提供的字符串模块符号 'org.springframework.security.core.userdetails.UsernameNotFoundException' 无效。示例符号:'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'。

附上我当前的build.gradle代码:

apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'Quickstart'
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'
repositories {
    mavenCentral()
}
dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    compile 'com.google.apis:google-api-services-calendar:v3-rev285-1.23.0'
    compile 'org.springframework.transaction.annotation.Transactional'
    compile 'org.springframework.security.core.userdetails.UsernameNotFoundException'
    compile 'org.springframework.security.core.userdetails.UserDetailsService'
    compile 'org.springframework.security.core.userdetails.UserDetails'
    compile 'org.springframework.security.core.authority.SimpleGrantedAuthority'
    compile 'org.springframework.security.core.GrantedAuthority'
    compile 'org.springframework.beans.factory.annotation.Autowired'
    compile 'org.springframework.stereotype.Service'
    compile 'org.springframework.security.core.context.SecurityContextHolder'
    compile 'org.springframework.security.authentication.UsernamePasswordAuthenticationToken'
    compile 'org.springframework.security.authentication.AuthenticationManager'
    compile 'org.springframework.beans.factory.annotation.Autowired'
    compile 'org.slf4j.LoggerFactory'
    compile 'org.slf4j.Logger'
    compile 'org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'
    compile 'org.springframework.data.repository.query.Param'
    compile 'org.springframework.data.jpa.repository.Query'
    compile 'org.springframework.data.jpa.repository.JpaRepository'
    compile 'javax.persistence.*'
    compile 'javax.persistence.Table'
    compile 'javax.persistence.ManyToOne'
    compile 'javax.persistence.JoinColumn'
    compile 'javax.persistence.Id'
    compile 'javax.persistence.GenerationType'
    compile 'javax.persistence.GeneratedValue'
    compile 'javax.persistence.Entity'
    compile 'javax.persistence.OneToOne'
    compile 'javax.persistence.NamedQuery'
    compile 'javax.persistence.NamedQueries'
    compile 'javax.persistence.FetchType'
    compile 'javax.persistence.CascadeType'
}

问题根源

你这踩了个新手常见的坑:把Java类/注解的全限定名当成了Gradle的依赖坐标!Gradle的dependencies块里需要的是groupId:artifactId:version格式的依赖包坐标,不是单个类的路径。比如UsernameNotFoundException是Spring Security核心包中的类,你只需要引入spring-security-core这个依赖包,包里的所有类自然就能在代码中使用,完全不需要把每个类都列出来。

修复后的build.gradle配置

把错误的依赖声明全部替换成正确的依赖包,以下是调整好的配置:

apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'Quickstart'
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'
repositories {
    mavenCentral()
}
dependencies {
    // 保留你原来正确的Google Calendar API相关依赖
    compile 'com.google.api-client:google-api-client:1.23.0'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    compile 'com.google.apis:google-api-services-calendar:v3-rev285-1.23.0'

    // SLF4J基础依赖,解决LoggerFactory/Logger的引用问题
    compile 'org.slf4j:slf4j-api:1.7.30'

    // Spring核心上下文依赖,包含@Autowired、@Service等注解
    compile 'org.springframework:spring-context:5.3.20'
    compile 'org.springframework:spring-beans:5.3.20'

    // Spring Security核心依赖,覆盖你列的所有Security相关类
    compile 'org.springframework.security:spring-security-core:5.6.3'

    // Spring Data JPA + JPA API依赖,覆盖你列的JPA相关注解和接口
    compile 'org.springframework.data:spring-data-jpa:2.6.4'
    compile 'javax.persistence:javax.persistence-api:2.2'

    // 可选:如果需要具体的JPA实现(比如Hibernate),可以添加
    // compile 'org.hibernate:hibernate-core:5.6.9.Final'
}

额外说明

  1. 我保留了你原本正确的Google Calendar API依赖,仅替换了错误的部分;
  2. 补充了SLF4J依赖,因为你代码里用到了LoggerFactory,不加会出现类找不到的错误;
  3. 版本号选择的是与Java 8兼容的稳定版本,你可以根据项目的Spring版本调整成一致的;
  4. 原配置里重复写了@Autowired的依赖项,我直接删除了重复内容。

修改完成后重新执行gradle -q run,应该就能正常构建和运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:29