java.lang.NoClassDefFoundError : com/google/common when trying to create a Configuration object

标签 java hadoop hdfs noclassdeffounderror

我正在尝试从 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/

相关文章:

java - Java 中的嵌套类型参数

java - Rest + Spring AOP + 接口(interface)不注入(inject)

hadoop - 用于平面数据结构的Apache Parquet

junit - Hadoop JUnit 测试向/从 hdfs 写入/读取

azure - Spark 流访问 azure Blob

java - 重写包含泛型参数的方法

postgresql - 如何将数据从 PostgreSQL 导入到 Hadoop?

hadoop - Hadoop从服务器无法连接到主服务器,即使服务正在运行且端口已打开

hadoop - 为什么我无法在 hadoop hdfs 的父文件夹结构中创建子文件夹?

java - 如何创建一个空的虚拟 HttpResponse