2012-07-06 126 views
0

我在vmware的Debian linux發行版本地安裝了Hadoop,而且我在運行測試作業時遇到了困難。運行hadoop作業:找不到類 - org.apache.tools.ant.launch.AntMain

我可以輕鬆構建IntelliJ Idea創建包,即使我的mrunit測試也按預期通過。

有一次,我嘗試運行工作,我得到以下異常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/AntMain 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    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:423) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:190) 
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.launch.AntMain 
    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:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 

我確信,所有的依賴,包括在罐子 - 我所看到的,ANT 1.6.5包含。

我甚至嘗試安裝ANT並將$ ANT_HOME設置爲它的位置,但沒有任何效果。

我可能會做錯什麼?

我使用下面的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>tl.knyt</groupId> 
    <artifactId>hanoi</artifactId> 
    <version>1.0</version> 
    <name>Hanoi</name> 
    <url>http://maven.apache.org</url> 

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

     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-mrunit</artifactId> 
      <version>0.20.2-cdh3u4</version> 
     </dependency> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
     </dependency> 

    </dependencies> 
    <repositories> 
     <repository> 
      <id>cloudera.repos</id> 
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> 
      <name>Cloudera Repos</name> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
</project> 

謝謝!

回答

1

確保在您的Hadoop類路徑中,你有組織/阿帕奇/工具/ ANT /推出的jar文件/ AntMain

你可以在$ HADOOP_HOME/conf目錄/ Hadoop的站點文件編輯jar文件

您必須重新啓動hadoop才能使更改生效。