天天看點

eclipse中配置heritrix的過程----heritrix-1.14.4

将heritrix-1.14.4-src和heritrix-1.14.4兩個壓縮檔案解壓<?xml:namespace prefix = o ns ="urn:schemas-microsoft-com:office:office" />

配置過程:

1、建立Java Project工程

在Eclipse中建立一個Java Project工程(注意:一定是Java Project的工程,不是Web Project工程),工程名稱為Heritrixproject。(名字可随便起)

以我的為例,對應地,工程Heritrixproject在本地磁盤目錄D:\eclipse-SDK-3.2.1-win32\workspace下面。

可以在目錄D:\eclipse-SDK-3.2.1-win32\workspace\Heritrixproject下面看到:兩個工程屬性檔案.classpath和.project。

2、向建立的Java Project添加Heritrix-1.14.4檔案

(1) 将目錄E:\Heritrix\heritrix-1.14.4-src\heritrix-1.14.4\src\java\下面的三個目錄:org、com、st一起拷貝到建立工程Heritrixproject目錄下面(絕對路徑為D:\eclipse-SDK-3.2.1-win32\workspace\Heritrixproject)。

(2) 将目錄E:\Heritrix\heritrix-1.14.4-src\heritrix-1.14.4\src\conf\下面的:三個目錄(包括:modules、profiles、selftest),以及四個檔案(包括:heritrix.properties、jmxremote.password.template、heritrix.cacerts、jndi.properties)一起拷貝到建立的工程Heritrixproject目錄下面。

(3) 将目錄E:\Heritrix\heritrix-1.14.4-src\heritrix-1.14.4\src\resources\下面的三個檔案(包括:arcMetaheaderBody.xsl、README.txt,其中README.txt沒有用處是顯而易見的)拷貝到建立的工程Heritrixproject目錄下。

(4) 将目錄E:\Heritrix\heritrix-1.14.4\heritrix-1.14.4\下面的webapps目錄拷貝到建立工程Heritrixproject目錄下面(絕對路徑為D:\eclipse-SDK-3.2.1-win32\workspace\Heritrix-1.14.4),這裡,webapps目錄下面有兩個WAR包(即admin.war和selftest.war)。

(5)将E:\Heritrix\heritrix-1.14.4\heritrix-1.14.4\下的lib檔案夾拷貝到工程下。

3、修改建立的Java Project工程的配置檔案

(1) 打開目錄D:\eclipse-SDK-3.2.1-win32\workspace\Heritrixproject下面的.classpath檔案,可以看到共有下面6行:

<?xml version="1.0"encoding="UTF-8"?>

<classpath>

<classpathentry kind="src" path="src"/>

<classpathentry kind="con"path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

<classpathentry kind="output" path="bin"/>

</classpath>

可以看到,建立Java Project工程之後,src是資源目錄,是以在Eclipse開發平台上,在src下面建立的資源目錄呈包結構組織。kind屬性指定工程中顯示的資源目錄,path指定了在該path(Eclipse預設為src)下的資源目錄都呈包結構組織。

将上面的内容做很大的修改,修改内容如下所示:(注意:這個地方裡面的lib下的jar就是拷貝到工程下lib裡面的jar。如果你用的最新版本的可能與這個jar檔案不一樣,這個你就要做相應的修。此時的最新版本為heritrix-1.14.4)

<?xml version="1.0"encoding="UTF-8"?>

<classpath>

    <classpathentrypath="" kind="src"/>

    <classpathentrypath="org.eclipse.jdt.launching.JRE_CONTAINER"kind="con"/>

    <classpathentrypath="lib/ant-1.6.2.jar" kind="lib"/>

    <classpathentrypath="lib/bsh-2.0b4.jar" kind="lib"/>

    <classpathentrypath="lib/commons-cli-1.0.jar" kind="lib"/>

    <classpathentrypath="lib/commons-codec-1.3.jar" kind="lib"/>

    <classpathentrypath="lib/commons-collections-3.1.jar" kind="lib"/>

    <classpathentrypath="lib/commons-httpclient-3.1.jar" kind="lib"/>

    <classpathentrypath="lib/commons-io-1.3.1.jar" kind="lib"/>

    <classpathentrypath="lib/commons-lang-2.3.jar" kind="lib"/>

    <classpathentrypath="lib/commons-logging-1.0.4.jar" kind="lib"/>

    <classpathentrypath="lib/commons-net-2.0.jar" kind="lib"/>

    <classpathentrypath="lib/commons-pool-1.3.jar" kind="lib"/>

    <classpathentrypath="lib/dnsjava-2.0.3.jar" kind="lib"/>

    <classpathentrypath="lib/fastutil-5.0.3-heritrix-subset-1.0.jar"kind="lib"/>

    <classpathentrypath="lib/itext-1.2.0.jar" kind="lib"/>

    <classpathentrypath="lib/jasper-compiler-tomcat-4.1.30.jar"kind="lib"/>

    <classpathentrypath="lib/jasper-runtime-tomcat-4.1.30.jar" kind="lib"/>

    <classpathentrypath="lib/javaswf-CVS-SNAPSHOT-1.jar" kind="lib"/>

    <classpathentrypath="lib/je-3.3.82.jar" kind="lib"/>

    <classpathentrypath="lib/joda-time-1.6.jar" kind="lib"/>

    <classpathentrypath="lib/jetty-4.2.23.jar" kind="lib"/>

    <classpathentrypath="lib/jets3t-0.5.0.jar" kind="lib"/>

    <classpathentrypath="lib/junit-3.8.2.jar" kind="lib"/>

    <classpathentrypath="lib/jericho-html-2.6.jar" kind="lib"/>

    <classpathentrypath="lib/libidn-0.5.9.jar" kind="lib"/>

    <classpathentrypath="lib/mg4j-1.0.1.jar" kind="lib"/>

    <classpathentrypath="lib/poi-2.0-RC1-20031102.jar" kind="lib"/>

    <classpathentrypath="lib/poi-scratchpad-2.0-RC1-20031102.jar"kind="lib"/>

    <classpathentrypath="lib/servlet-tomcat-4.1.30.jar" kind="lib"/>

    <classpathentrypath="" kind="output"/>

</classpath>其中:

上面的<classpathentry kind="src"path=""/>中,指定src為"",這表示,隻要在該工程的根目錄下面建的目錄資源都呈現表結構組織;

上面的kind為lib,對應的就是我們拷貝到工程目錄下面的lib,path的值就是該lib目錄下面的所有的jar檔案。

4.配置外部jar包,

      切換到eclipse視窗下,重新整理下工程。

右鍵單擊工程,選擇【Build Path】—> 【Add External Archives】在彈出的視窗中選擇添加目錄heritrix-1.12.1-src\heritrix-1.12.1\lib。

再次重新整理下工程。沒有錯誤提示了。

5、修改heritrix.properties屬性檔案

打開heritrix.properties屬性檔案,可以看到預設情況下,Heritrix-1.14.4的屬性檔案如下所示:

##############################################################################

# H E R I T R I X P R O P E R T I E S

##############################################################################

# Properties with 'heritrix.' or'org.archive.crawler.' prefix get loaded

# into System.properties on startup so available via System.getProperties.

# Version is filled in by the maven.xmlpregoal. It copies here the project

# currentVersion property.

heritrix.version = @VERSION@

# Location of the heritrix jobsdirectory.

heritrix.jobsdir = jobs

# Default commandline startup values.

# Below values are used if unspecified on the command line.

heritrix.cmdline.admin = 

heritrix.cmdline.port = 8080

heritrix.cmdline.run = false

heritrix.cmdline.nowui = false

heritrix.cmdline.order =

heritrix.cmdline.jmxserver = false

heritrix.cmdline.jmxserver.port = 8081

上面四行紅色辨別的代碼行,一般來說,需要修改。

第一行,heritrix.version指定了Heritrix的版本号,因為我們測試的是版本号為1.14.4,修改為:

heritrix.version = 1.14.4

第二行,heritrix.jobsdir指定了Heritrix在執行抓取任務時,抓取到的内容存放的目錄,預設在工程下面的jobs目錄下面。

第三行,heritrix.cmdline.admin指定了登入WebUI時使用的帳号,預設為空,可以自己随意設定,設定需要按照一定的格式(使用者名:密碼),我們修改為:

heritrix.cmdline.admin = admin:admin

其中,使用者名和密碼使用“:”分隔。

第四行,heritrix.cmdline.port指定了運作Heritrix背景程式,監聽的WebUI使用的端口号,預設為8080端口,可以設定一個目前沒有占用的端口号,比如我們修改為:

heritrix.cmdline.port = 9090

、啟動Heritrix背景程式

回到Eclipse平台視窗,找到建立的Java Project工程Heritrixproject中,資源包org.archive.crawler下面的Java類檔案Heritrix.java,右鍵單擊Heritrix.java檔案,選擇【Run As】—> 【Java Application】選項,便看見Heritrix背景已經啟動了,在Eclipse控制台【Console】中可以看到啟動過程的詳細資訊,如下所示:

 <?xml:namespace prefix = v ns ="urn:schemas-microsoft-com:vml" />

7、登入WebUI

現在,可以成功登入WebUI,設定抓取任務了。

在浏覽器位址欄中鍵入位址連結 http://localhost:9090,可以看到WebUI登入界面.

可能出現的問題:

1.配置好之後當我們運作Heritrix.java的時候可能編譯不通過。這是因為sun包是受保護的包,預設隻有sun公司的軟體才能使用。myEclipse會報錯,把對保護使用waring就可以了。

解決辦法:Windows -> Preferences -> Java-> Compiler -> Errors/Warnings-> Deprecated and trstricted API ->Forbidden reference (access rules): -> change to warning

2.可能出現的異常:......thread-10org.archive.util.ArchiveUtils.<linit>( )TLD list....

解決辦法:将/heritrix-1.14.4-src/heritrix-1.14.4/src/resources/org/archive/util 下的文本文檔拷貝到heritrix中的org/archive/util下;

3.Exception in thread "StartNextJob"java.lang.NoSuchMethodError:

org.apache.commons.httpclient.HttpState.setCookiesMap(Ljava/util/SortedMap;

解決辦法:HttpState在HeritrixX.XX.X.jar和commons-httpclient.XXX.jar裡面重複了,在build path裡面把HeritrixX.XX.X.JAR放在commons-httpclient.XXX.jar前面就可以解決這個問題。當然了,開始我根本沒有導入HeritrixX.XX.X.jar這個包,會有其他的錯誤。