线程“main”中的异常java.lang.NoClassDefFoundError:com / google / common / base / Preconditions

时间:2015-02-04 09:33:15

标签: eclipse hadoop mapreduce

在eclipse中运行时减少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$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.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

9 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

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

答案 2 :(得分:3)

这是由Guava-x.y.z.jar引起的,因为它缺少确保你添加它

答案 3 :(得分:2)

使用

中的google collection JAR

这可能会解决您的问题。

答案 4 :(得分:2)

通过添加以下jar解决了我的问题

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

我在尝试使用MRUnit时也遇到了这个错误,并且找不到maven依赖项,所以我尝试手动添加它。这是你的情况吗?

问题是,如果您手动添加jar,它将继续无法询问剩余的MRUnit jar(MRUnit的pom中的那些),直到您使用相同的版本添加它们就像它的pom。

未找到mrunit的原因是因为我没有在dependecy声明中使用必要的分类器

解决方案adding the classifier hadoop1hadoop2

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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