2013-10-21 48 views
0

我在嘗試構建包含在Giraph中的SimpleShortestPathsComputation示例,並從我的主目錄中運行它。基本上,我只是試圖調整SimpleShortestPaths示例並且沒有任何麻煩地運行它(不太確定最好的方法是什麼)。我的方法如下:運行giraph工作(classnotfoundexception)的問題

SimpleShortestPathsComputaiton.java:

import org.apache.giraph.graph.BasicComputation; 
...... 
import org.apache.log4j.Logger; 
import java.io.IOException; 
public class SimpleShortestPathsComputation extends BasicComputation< 
    LongWritable, DoubleWritable, FloatWritable, DoubleWritable> { 
...... 

我構建它,像這樣:

JCC = javac 
JFLAGS = "-Xlint" 
OUTPUT_CLASS="test" 
CLASSPATH = $(HADOOP_HOME)/hadoop-core-0.20.203.0.jar:$(GIRAPH_HOME)/giraph-core/target/giraph-1.1.0-SNAPSHOT-for-hadoop-0.20.203.0-jar-with-dependencies.jar 

default: SimpleShortestPathsComputation.class 

SimpleShortestPathsComputation.class: SimpleShortestPathsComputation.java 
mkdir -p $(OUTPUT_CLASS) 
$(JCC) $(JFLAGS) -classpath $(CLASSPATH) -d $(OUTPUT_CLASS) SimpleShortestPathsComputation.java 
jar cvf SimpleShortestPathsComputation.jar -C $(OUTPUT_CLASS)/ . 

這工作得很好,我創建了一個名爲SimpleShortestPathsComputation一個jar文件。然後我試着像這樣運行它:

$HADOOP_HOME/bin/hadoop jar $GIRAPH_HOME/giraph-examples/target/giraph-examples-1.1.0-SNAPSHOT-for-hadoop-0.20.203.0-jar-with-dependencies.jar \ 
org.apache.giraph.GiraphRunner /home/hduser/SimpleShortestPathsComputation.jar \ 
-vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat \ 
-vip /user/hduser/input/tiny_graph.txt \ 
-vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat \ 
-op /user/hduser/output/shortestpaths -w 1 \ 
/

但是,這導致在以下:

Exception in thread "main" java.lang.ClassNotFoundException: /home/hduser/SimpleShortestPathsComputation.jar 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:190) 
at org.apache.giraph.utils.ConfigurationUtils.handleComputationClass(ConfigurationUtils.java:470) 
at org.apache.giraph.utils.ConfigurationUtils.populateGiraphConfiguration(ConfigurationUtils.java:453) 
at org.apache.giraph.utils.ConfigurationUtils.parseArgs(ConfigurationUtils.java:207) 
at org.apache.giraph.GiraphRunner.run(GiraphRunner.java:74) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 
at org.apache.giraph.GiraphRunner.main(GiraphRunner.java:124) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 

我不太清楚我在做什麼錯。如果任何人都可以指引我正確的方向,或鏈接到一個資源,解釋我想要完成的更簡單的方法,我將不勝感激!

+0

你知道類和jar文件之間的區別嗎? –

+0

是的......其實我在上面有一個錯字 - 我應該嘗試運行一個類而不是jar本身。 –

回答

3

如果您運行的是 「Quick start」,其實也有不一致之處1.0.0:

(1)參數 「-vof」 應該是 「-of」。 「-vof」在1.1.0中引入(請參閱GIRAPH-774)。

(2)在1.0.0,不存在一個名爲 「org.apache.giraph.examples.SimpleShortestPathsComputation」 級,它更改爲 「org.apache.giraph.examples.SimpleShortestPathsVertex」。

相關問題