10

我使用 grails 3.1.16

构建.gradle:

dependencies {
    compile "com.google.guava:guava:18.0"
    compile "org.grails.plugins:spring-security-rest:2.0.0.M2"
}

运行此代码时:

   private LoadingCache<String, Boolean> attempts

    @PostConstruct
    void init() {
        Integer time = ApplicationContextHolder.getProperty(ApplicationContextHolder.config.time)
        attempts = CacheBuilder.newBuilder()
                .expireAfterWrite(time, TimeUnit.MINUTES)
                .build({ 0 } as CacheLoader)
    }

我收到以下错误:

Caused by: java.lang.NoSuchMethodError: com.google.common.base.Platform.systemNanoTime()J
        at com.google.common.base.LocalCache(Ticker.java:60)
        at com.google.common.cache.LocalCache$Segment.put(LocalCache.java:2827)
        at com.google.common.cache.LocalCache.put(LocalCache.java:4149)
        at com.google.common.cache.LocalCache$LocalManualCache.put(LocalCache.java:4754)
        at com.google.common.cache.Cache$put.call(Unknown Source)

运行依赖报告后,我发现问题是由 Spring Security REST 插件的依赖引起的:( com.google.guava:guava-base:r03) - 具有相同的包名称“com.google.common。 base" 和 Platform.class 没有这样的方法 systemNanoTime()

|    +--- org.grails.plugins:spring-security-rest:2.0.0.M2
|    |    +--- com.google.guava:guava-io:r03
|    |    |    +--- com.google.guava:guava-annotations:r03
|    |    |    \--- com.google.guava:guava-base:r03
|    |    |         \--- com.google.guava:guava-annotations:r03

有什么想法可以解决这个问题吗?

4

2 回答 2

8

步骤 1.请检查更新的依赖项(可能会报告问题):

dependencies {
    compile 'org.grails.plugins:spring-security-rest:2.0.0.RC1'
    compile 'com.google.guava:guava:24.0-jre'
}

您可以查看 spring-security-rest文档repo 以及 guava文档repo

或者

第2步。

compile("org.grails.plugins:spring-security-rest:2.0.0.RC1") {
            excludes([group: 'com.google.guava:guava'])
}

或者

第 3 步。build.gradle可以从 JAR 文件中排除已编译的类:

jar {
 exclude "com/google/guava/**/**"
}

或者您可以参考grails 文档

于 2018-03-05T20:26:43.903 回答
4

你有没有尝试过?

dependencies {
    compile "com.google.guava:guava:18.0"
    compile ("org.grails.plugins:spring-security-rest:2.0.0.M2") {
        exclude module: 'guava-base'

        // can also be specified with group
        // exclude group: 'com.google.guava', module: 'guava-base'
    }
}

这将排除guava-basefrom的传递依赖spring-security-rest

于 2018-03-02T00:21:03.203 回答