Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions

While 运行 by java map reduce application in eclipse, 并面临以下异常。我也在我的构建路径中包含了 commons-logging-1.2.jar 文件,但仍然在下面。

我是 hadoop 新手。请帮助我。

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
    at org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:314)
    at org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:327)
    at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:409)
    at AverageNosClass.main(AverageNosClass.java:71)
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Preconditions
    at java.net.URLClassLoader.run(URLClassLoader.java:366)
    at java.net.URLClassLoader.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 4 more

确保您已将正确的 Jar 添加到构建路径中..

您的 Hadoop lib 目录是否包含您在 eclipse 项目中使用的所有 jar 文件?

如果没有将它们放在Hadoop lib 目录中并重新启动hadoop。

这是由 Guava-x.y.z.jar 引起的,因为它丢失了,请确保您添加了它

使用来自

的 google 集合 JAR

这可能会解决您的问题。

我在尝试使用MRUnit时也出现了这个错误,没有找到maven依赖,所以我尝试手动添加它。这是你的情况吗?

问题是,如果您手动添加 jar,它将一直无法请求其余的 MRUnit jar(MRUnit 的 pom 中的那些),直到您添加它们所有版本都与其 pom 中的版本相同。

找不到mrunit的原因是我没有在依赖声明中使用必要的分类器

解决方案adding the classifierhadoop1hadoop2

将 guava-11.0.2.jar 添加到构建路径解决了这个问题。这个 jar 在 /share/hadoop/tools/lib 文件夹中。我已经安装了hadoop 2.4.0.

我已经通过添加 guava-14.0.1 库解决了这个问题。

我的问题已通过添加以下 jar 得到解决

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>13.0-rc1</version>
</dependency>

我们遇到了类似的问题,希望这对某人有所帮助:我们的类路径中有 jar,但仍然出现此问题。原因是 - 在 build.gradle 中它被加载为 compileOnly。将其更改为 implementation 使其工作