Maven을 사용하여 Hadoop 작업을 빌드하려고합니다. 이 작업은 Maven을 사용하지 않고 Eclipse에 Hadoop Jar 종속성을 직접 가져올 때 잘 작동합니다.Hadoop Maven 종속성 오류
또한 Hadoop 종속성이없는 Maven을 사용하여 간단한 jar (hello world type)를 만들 수 있습니다.
하지만 하둡 종속성을 추가하고 항아리를 실행할 때이 오류가 얻을 :
<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>
어디 잘못 갈거야 :
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을 파일 변경이됩니다?
편집 : 지금은
, 나는 로컬 항아리를 실행하고 -하지 하둡에 있지만 로컬 데이터에. 그냥 같은 문제가 발생한 사람에 대한 해결책으로
java -jar jarname.jar
어떻게 실행하나요? –
hadoop -jar jarname.jar – Gitmo
모든 종속성이있는 jar 파일을 만드는 경우가 아니면 실행 클래스 경로에 대한 종속성이 있어야합니다. –