Java:在Apache Hadoop中找不到PageRank算法的类

Java:在Apache Hadoop中找不到PageRank算法的类,java,maven,hadoop,Java,Maven,Hadoop,我试图在ApacheHadoop(2.6.5)集群(1主2从)中运行PageRank算法。我正在使用此存储库中的程序-。我可以用这个命令编译所有的源代码- sudo javac -classpath ${HADOOP_CLASSPATH} -d ./build src/it/uniroma1/hadoop/pagerank/PageRank.java src/it/uniroma1/hadoop/pagerank/job1/PageRankJob1Mapper.java src/it/uniro

我试图在ApacheHadoop(2.6.5)集群(1主2从)中运行PageRank算法。我正在使用此存储库中的程序-。我可以用这个命令编译所有的源代码-

sudo javac -classpath ${HADOOP_CLASSPATH} -d ./build src/it/uniroma1/hadoop/pagerank/PageRank.java src/it/uniroma1/hadoop/pagerank/job1/PageRankJob1Mapper.java src/it/uniroma1/hadoop/pagerank/job1/PageRankJob1Reducer.java src/it/uniroma1/hadoop/pagerank/job2/PageRankJob2Mapper.java src/it/uniroma1/hadoop/pagerank/job2/PageRankJob2Reducer.java src/it/uniroma1/hadoop/pagerank/job3/PageRankJob3Mapper.java
我使用以下命令创建了jar文件
sudojar-cf build/pagerank.jar build/

我试着像wordcount示例一样运行程序,如下所示-

sudo bin/hadoop jar hadoop-pagerank/build/pagerank.jar PageRank --
input /usr/local/hdfs/web-Google.txt --output /usr/local/hdfs-out-PR
Exception in thread "main" java.lang.NoClassDefFoundError: PageRank (wrong name: it/uniroma1/hadoop
/pagerank/PageRank)
有时我会犯这样的错误-

sudo bin/hadoop jar hadoop-pagerank/build/pagerank.jar PageRank --
input /usr/local/hdfs/web-Google.txt --output /usr/local/hdfs-out-PR
Exception in thread "main" java.lang.NoClassDefFoundError: PageRank (wrong name: it/uniroma1/hadoop
/pagerank/PageRank)
有时我会在线程“main”java.lang.ClassNotFoundException:PageRank中遇到类似这样的错误-
异常,用于不同类型的编译。


我不确定我做错了什么。有谁能帮助我在Hadoop中编译和运行程序的正确步骤吗?我没有任何pom.xml文件,我能够运行提供的wordcount示例jar。

您必须在类名称之前使用包名称, 这意味着您必须使用:
it.uniroma1.hadoop.pagerank.pagerank

而不是
PageRank
听从你的指挥。 像这样:


hadoop jar hadoop pagerank/build/pagerank.jar it.uniroma1.hadoop.pagerank.pagerank--input/usr/local/hdfs/web-Google.txt--output/usr/local/hdfs out PR

您需要在包中给出完整的类名
it.uniroma1.hadoop.pagerank.pagerank