代码之家  ›  专栏  ›  技术社区  ›  lmccrate

使用Guava类时,即使Guava包含在Gradle构建文件和类路径中,也不会出现NoClassDefFoundError

  •  0
  • lmccrate  · 技术社区  · 7 年前

    //build.gradle
    
    plugins {
        id 'java'
    }
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile group: 'com.google.guava', name: 'guava', version: '22.0'
    }
    
    task wrapper(type: Wrapper) {
        gradleVersion = '3.3' //Tried 3.1 - 4.0.1 
        distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
    }
    

    在Intellij中运行项目时,我遇到以下运行时错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Multiset
    

    库肯定在类路径中,我不知道为什么会发生这种情况。

    因此,我认为问题在于Gradle 3.4+(3.4、3.5.1、4.0和4.0.1),所有这些我都尝试过并收到了NoClassDefFoundError。

    没有提及中需要的Gradle版本 Guava documentation

    2 回复  |  直到 7 年前
        1
  •  0
  •   Mateusz Chrzaszcz    7 年前

    javac 但在运行时,它不可用。

    这里很好地解释了一个非常类似的问题: NoClassDefFoundError at Runtime with Gradle

        2
  •  0
  •   lmccrate    7 年前

    问题在于我使用的Intellij版本(2016.3.1)

    一旦我将Intellij更新到2016.3.7,该项目在Gradle的所有版本中都运行良好。