准备用Heritrix来做个小的搜索引擎,以下是我在配置Heritrix的过程中遇到的各种问题,通过几个小时的查找和分析,终于把Heritrix的单独配置和在eclipse下的配置做成功了。我在配置过程中遇到问题的时候,发现网上关于这方面的资料比较少,很多人都遇到过相同的问题,但没有人具体详细的给予解答,下面我将从网上获得的资料和我个人的认识进行总结,希望对才开始配置Heritrix的朋友有所帮助。 当然首先得下载Heritrix包。 下载最新版(本人喜欢最新的)的heritrix1.14.4.zip和heritrix-1.14.4-src.zip。地址:
http://sourceforge.net/projects/archive-crawler/files/archive-crawler%20(heritrix%201.x)/
一、 安装、配置Heritrix
1、将得到的heritrix-1.14.4.zip压缩包直接解压缩到某一目录,我选择的是F:\Heritrix。
2、然后,将 F:\Heritrix 目录中的heritrix-1.14.4.jar文件解压缩,把 profiles\default 下的两个文件order.xml和seeds.txt复制到 F:\Heritrix\conf 目录下。
3、以文本编辑方式打开 F:\Heritrix\conf 下的heritrix.properties文件,在“heritrix.cmdline.admin = ” 项的后面加入你所要设定的管理员账户和密码,用“:”分割,如:
heritrix.cmdline.admin = admin:admin
4、复制 F:\Heritrix\conf 下的jmxremote.password.template文件到主目录F:\Heritrix下,并更名为jmxremote.password。编辑此文件, 更改最后两行"monitorRole @PASSWORD@"、"controlRole @PASSWORD@"中的"@PASSWORD@"为管理员密码。如:
monitorRole admin
controlRole admin
如果顺利,就可以运行了。系统自带脚本的运行如下:
将cmd定位到 F:\heritrix\bin下,执行 "heritrix --admin=admin:admin" 命令,即可启动 heritrix, 有一点需要注意,heritrix默认使用8080端口,要保证系统端口没有冲突。之后便可以访问
http://127.0.0.1:8080或
http://localhost:8080/使用heritrix提供的WUI,即Web管理端。并且使用"admin/admin"登录。
可能会出现的异常: 其中在Heritrix有一条异常信息是:java.lang.ClassNotFoundException:org.archive.crawler.Heritrix. 在Dos下可能是这样显示:JMX password file is missing or permission not set correctly. 原因是,heritrix启动时找不到heritrix的.Jar 包,即heritrix-1.14.4.jar。你就要看你的F:/Heritrix下有没有这个包,没有就加上,基本上是有的。 有的话,就要看你的环境变量中是不是设置了HERITRIX_HOME环境变量,如 果有,把它删除就解决了。 其它情况我没有遇到,就不写了。
二、在Eclipse中配置Heritrix
1、新建空的java项目(注意不是WEB项目),命名为heritrix_src; 2、把heritrix-1.14.4-src\src\java\目录下的org、st和com文件夹拷贝到项目的src目录下; 3、把heritrix-1.14.4-src\src下的wbapps文件夹拷贝到heritrix_src中; 4、右击heritrix_src项目,点击properties ,通过JavaBuildPath,将heritrix-1.14.4-src下的lib目录下的所有包导入进来; 5、把heritrix-1.14.4-src\src下的conf目录下的modules、profiles、selftest文件夹以及effective_tld_names.dat、heritrix.properties和jndi.properties文件拷贝到项目的src目录下 6、打开项目src下的heritrix.properties文件,找到"heritrix.cmdline.admin=",修改为“heritrix.cmdline.admin = admin:admin”; 8、Conf/jmxremote.password.template拷贝到heritrix目录下。改名为:jmxremote.password,最后再行改成: monitorRole admin controlRole admin 9、找到org.archive.crawler包,运行Heritrix.java中的main函数。 成功提示信息为: 09:14:07.406 EVENT Starting Jetty/4.2.23
09:14:07.656 EVENT Started WebApplicationContext[/,Heritrix Console]
09:14:07.750 EVENT Started SocketListener on 127.0.0.1:8082
09:14:07.750 EVENT Started
Heritrix version: 1.14.4
可能会出现的异常: 1、在Heritrix.java中出现FileURLConnection 红叉: 解决办法:sun包是受保护的包,默认只有sun公司的软件才能使用,MyEclipse会报错,把对保护使用waring就可以了。即:Windows -> Preferences -> Java -> Compiler -> Errors/Warnings-> Deprecated and trstricted API -> Forbidden reference (access rules): -> 改为“warning” 2、出现的异常:......
thread-10 org.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、在eclipse中可以启动heritrix,但在jobs->modules.jsp页面中没有添加(“Add”)按扭,且出现以下异常。 致使错误:“无法编译样式表” 严重
thread-12 org.archive'crawler.framework.WriterPodProcessor.io.arc.......
解决办法:将heritrix 项目中的modulse的上一级目录文件添加到eclipse的classpath中。
参考资料:http://www.360doc.com/content/10/0913/18/2793979_53385587.shtml
(注:参考资料中eclipse的配置方法虽然能启动Heritrix,但发现进入控制台后Jobs/Module中的设置项不能选择!而上面提到的方法已经把这个问题解决了)