我正在尝试从 java 中与我的 HDFS 交互。当我尝试创建新的配置对象时
配置conf = new Configuration();
我的应用程序抛出此错误
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
at org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:306)
at org.apache.hadoop.conf.Configuration$DeprecationDelta.<init>(Configuration.java:319)
at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:401)
我已将 hadoop-common-2.0.0-cdh.4.5.0.jar 包含在我的 java 构建路径中,并检查了我的 hdfs 实际上正在运行 hadoop 2.0 cdh 4.5.0。
我没有包含必要的 jar 吗?
最佳答案
你使用Maven吗?如果没有,建议使用 maven 进行依赖管理。
它们有一个简单的依赖关系,封装了所有依赖关系:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.0.0-cdh.4.5.0</version>
</dependency>
但是这个特定的错误来自 Guava 库,您需要将其包含在类路径中。但我猜你会遇到新问题。
关于java.lang.NoClassDefFoundError : com/google/common when trying to create a Configuration object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966488/