在nutch項目集成到eclipse中遇到了不少的問題,第一次參照網上資料配置成功後,因爲沒作筆記。次日寫筆記時,沒想到又忘記了。誒,悲催的又花了一天。總以爲此次配環境花的時間真的是太多了。html
進入正題:java
一、將nutch項目部署到eclipse
首先到nutch官網上找到FAQ連接http://wiki.apache.org/nutch/FAQ,進入連接
點擊第二個連接查看。
參照文檔進行配置,有卡殼不明白的地方,繼續在網上針對具體問題查找資料。集成時可參照http://blog.csdn.net/witsmakemen/article/details/8866235。
運行以前必須有一下先決條件:
A、在windows上安裝配置Apache Ant,http://ant.apache.org/manual/index.html
B、安裝Eclipse,這個不用說確定是必須的。
C、在Linux安裝svn。目的:遷出nutch1.7源代碼。
D、在Linux下檢出nutch1.7代碼
[root@nutch-five branch-1.7]# svn co http://svn.apache.org/repos/asf/nutch/branches/branch-1.7/
E、在Linux安裝ivy插件。目的,根據ivy配置文件動態下載jar包。
F、編譯branch1.7
apache
[root@nutch-five branch-1.7]# antwindows
二、在Linux下執行ant命令編譯源代碼:ant</p>eclipse
三、編譯成功後,將trunk文件夾複製到windows中,導入eclipse</span>svn
A、eclipse : File -- New -- Java Project
B、點擊NEXT
找到 conf 文件夾 ,而後點擊 Add Folder 'conf' to build path
defautl output 設置爲 apache-nutch-1.7/conf
在這兒我由於不能建立conf,因此寫爲conf
點擊Finish
至此,創建成功。
C、此時會發現工程有錯誤(紅色的小叉叉),這是由於缺乏引用致使。
以parse-html爲例:
import org.cyberneko.html.parsers.*;
這裏報錯是由於缺乏 nekohtml-0.9.5.jar
如何獲取nekohtml-0.9.5.jar:
找到runtime/local/plugins/lib-nekohtml/nekohtml-jar,單擊右鍵add to build path,其餘bug以此類推。
在 這兒一共要的jar包大概有,runtime/local/plugins/lib-nekohtml/nekohtml-jar、runtime /local/plugins/parse-html/tagsoup.jar、runtime/local/plugins/feed /rome.jar(解決了com.sun.syndication.io.SyndFeedInput報錯問題)、runtime/local /plugins/urlfilter-automaton/automaton.jar(解決 dk.brics.automaton.RunAutomaton報錯問題)
至此整個工程將應該不會有錯了。
四、新建文件夾urls
在文件夾內新建文件url,存放待抓取網址
如:http://www.163.com/
五、運行程序
六、報異常:
ERROR security.UserGroupInformation (UserGroupInformation.java:doAs(1193)) - PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop1071373990\.staging to 0700
解決方案:
下 載hadoop的源代碼,從新編譯hadoop的hadoop-core.jar包,替換掉nutch項目中的hadoop-core.jar的jar 包。(注意:下載時先肯定nutch引用的hadoop的哪一個版本的jar包,而後下載對應版本。在runtime/local/lib中能夠找到對應 hadoop的jar包。)
下載hadoop源代碼:
下載連接:http://apache.dataguru.cn/hadoop/common/hadoop-1.2.1/
一、註釋掉build.xml中的
<target name="create-native-configure">
<exec executable="autoreconf" dir="${native.src.dir}" searchpath="yes" failonerror="yes"> <arg value="-if"/>
</exec>
</target>
二、去掉compile-core-native中的create-native-configure依賴
<target name="compile-core-native" depends="create-native-configure,compile-core-classes"
if="compile.native">
三、修改hadoop-1.1.2/src/core/org/apache/hadoop/fs/FileUtil.java 691行,把throw new IOException改成LOG.warn
四、用ant編譯項目,編譯成功後從build文件夾中取出hadoop-core.jar文件夾,放入nutch項目中,替換項目中原有hadoop-core.jar,放入build/lib文件夾下。再經過buildpath添加jar包。
添加完畢後,運行測試
七、繼續運行,繼續報錯
java.lang.RuntimeException: Error in configuring object
解決方案:
將nutch-default.xml中的
<property>
<name>plugin.folders</name>
<value>./src/plugin</value>
<description>Directories where nutch plugins are located. Each
element may be a relative or absolute path. If absolute, it is used
as is. If relative, it is searched for on the classpath.</description>
</property>
紅色處改一下就能夠了。
參照上邊的運行方法,繼續運行測試,產生異常:
java.net.SocketException: Software caused connection abort: recv failed
解決方案:
連接不成功,能夠忽略,對程序沒有影響。
至此,nutch在eclipse中集成成功。
相關異常:
ERROR security.UserGroupInformation (UserGroupInformation.java:doAs(1193)) - PriviledgedActionException as:hadoop cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-hadoop\mapred\staging\hadoop1071373990\.staging to 0700
解決方案:
從新編譯hadoop的hadoop-core.jar包,替換掉nutch項目中的hadoop的jar包
一、註釋掉build.xml中的
<target name="create-native-configure">
<exec executable="autoreconf" dir="${native.src.dir}" searchpath="yes" failonerror="yes"> <arg value="-if"/>
</exec>
</target>
二、去掉compile-core-native中的create-native-configure依賴
<target name="compile-core-native" depends="create-native-configure,compile-core-classes"
if="compile.native">
三、修改hadoop-1.1.2/src/core/org/apache/hadoop/fs/FileUtil.java 691行,把throw new IOException改成LOG.warn
四、用ant編譯項目,編譯成功後從build文件夾中取出hadoop-core.jar文件夾,放入nutch項目中,替換項目中原有hadoop-core.jar,放入build/lib文件夾下。再經過buildpath添加jar包。
添加完畢後,運行測試
源碼環境搭建時發現sun.net.util.ipaddressutil的包沒有
sun.net 包裏的類,在eclipse裏默認是不讓用的。解決辦法是自定義access rules工程上右鍵->工程屬性->java builder path->Libraries標籤,點擊JRE System Library裏面的Access rules,add sun/** 爲accessible,若是該項存在,就edit。
具體操做方法:
問題解決後,發現繼續有錯,缺乏ant的jar包,添加ant的jar包。
oop