maven - Hadoop Maven 依赖错误

标签 maven hadoop dependencies

我正在尝试使用 Maven 构建 Hadoop 作业。当我不使用 Maven 并直接将 Hadoop Jar 依赖项导入 eclipse 时,这项工作效果很好。

我还能够在没有 Hadoop 依赖项的情况下使用 Maven 构建一个简单的 jar(hello world 类型)。

但是当我添加 Hadoop 依赖项并运行 jar 时,我得到这个错误:

dataException in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
    at org.graphhadoop.CreateAdjacency.Adjacency(CreateAdjacency.java:74)
    at org.graphhadoop.Driver.main(Driver.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 2 more

pom 文件更改如下:

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
        </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.203.0</version>
        </dependency>
  </dependencies>

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>org.graphhadoop.Driver</mainClass>
            </manifest>
          </archive>
          <manifestEntries>
          <Class-Path>../target/classes</Class-Path>
        </manifestEntries>
        </configuration>
      </plugin>
    </plugins>
  </build>

我哪里错了?

编辑:

目前,我在本地运行 Jar - 不是在 Hadoop 上,而是在本地数据上。

java -jar jarname.jar

最佳答案

作为遇到相同问题的人的解决方案,以下是解决问题的方法:

需要将这些依赖添加到 pom.xml 中:

        <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.5.2</version>
        </dependency>

        <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.3</version>
        <classifier>jdk15</classifier>
        </dependency>

        <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.203.0</version>
        </dependency>
  </dependencies>

和这些构建插件:

<build>
    <plugins>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
        <executions>
        <execution>
         <goals>
           <goal>attached</goal>
         </goals>
         <phase>package</phase>
         <configuration>
           <descriptorRefs>
             <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>org.lll..</mainClass>
            </manifest>
      <manifestEntries>
          <Class-Path>../target/classes</Class-Path>
            </manifestEntries>
          </archive>
        </configuration>
        </execution>
    </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
          <mainClass>org...</mainClass>
            </manifest>
          </archive>
      <manifestEntries>
          <Class-Path>../target/classes</Class-Path>
        </manifestEntries>
        </configuration>
      </plugin>
    </plugins>  
</build>

关于maven - Hadoop Maven 依赖错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9089520/

相关文章:

java - 如何配置 github 操作以使用 Maven 进行编译并依赖于其他私有(private)存储库?

spring - 如何控制在测试环境和生产环境之间变化的 Spring 注入(inject)?

java - eclipse中hadoop中的protoc错误

hadoop - 文件复制到 DataNodes 时 Hadoop HDFS 中的数据流管道

hadoop - YARN 提示 java.net.NoRouteToHostException : No route to host (Host unreachable)

java - Maven 包不包含所有依赖项的 JAR

javascript - 如何管理 JavaScript 中的依赖项?

java.lang.ClassNotFoundException : org. json.JSONObject

hadoop - 如何使用Sqoop以Parquet-Avro文件格式保存数据?

Java:编译相互关联的类