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 classifierhadoop1
或hadoop2
将 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
使其工作
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 classifierhadoop1
或hadoop2
将 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
使其工作