【问题标题】:How to add Guava lib to runtime classpath in Intellij idea如何在 Intellij IDEA 中将 Guava lib 添加到运行时类路径
【发布时间】:2017-06-25 22:53:55
【问题描述】:

我正在尝试在 Intellij Gradle 项目中使用 Guava,虽然我的代码可以编译,但在运行时我看到了这个 >

java.lang.NoClassDefFoundError: com/google/common/collect/Ordering

我已经阅读了一些帖子,这些帖子表明 Guava 库在运行时不在类路径中。我已经通过使用 System.getProperty("java.class.path") 写出类路径来验证这一点,并且没有 Guava 库。

我已经尝试(正如其他人所建议的那样)将文件夹或 lib 本身添加为具有范围 = compile 的模块依赖项。看图>

Intellij Module Dependencies 这也没有奏效。

这里是项目中使用的库> Project Libs

任何关于这里发生的事情的建议都非常感激。

我的 build.gradle >

group 'EE'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

它不包含对我添加到项目库中的 guava 库的引用:: com.google.guava:guava:18.02

看起来我在某个地方错过了重要的一步。

【问题讨论】:

  • 您可能会发现只为您的项目编写一个 POM 并让 intellij 使用它更容易。然后您就不必摆弄任何这些,并且该项目很容易移植到其他 IDE(或没有 IDE)。
  • Gradle 项目中的所有依赖项都必须在build.gradle 文件中定义,您在 IntelliJ IDEA 模块依赖项中所做的任何更改都将在下一次 Gradle 项目刷新时丢弃。请显示您的build.gradle 文件的相关部分以及您使用的 Guava 库版本。
  • 谢谢。我会尝试,但我真的希望它可以与 Gradle 一起使用。
  • 在阅读了另一篇直接修改 build.gradle 的帖子后,我通过添加以下内容解决了这个问题 > compile group: 'com.google.guava', name: 'guava', version: '18.0' to我的 build.gradle。不知道这是否是正确的做法。
  • 没错。 compile 用于主应用程序的编译/运行时依赖项。 testCompile 是编译和运行测试所需的依赖项。

标签: intellij-idea guava noclassdeffounderror


【解决方案1】:

根据 Guava 的官方文档。

https://github.com/google/guava/wiki/UseGuavaInYourBuild

将下面的行添加到您的 build.gradle 文件依赖项部分:

dependencies {
  compile group: 'com.google.guava', 
  name: 'guava', 
  version: '23.5-jre' # or 23.5-android for the Android flavor
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 2010-10-25
    • 1970-01-01
    • 2018-10-27
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多