Heritrix的Modules界面不能改变选择项的问题(涉及Scope, Frontier, PreProcessor, Fetcher, Extractor, Writer, PostProcessor)

2008-03-10 – 9:50 pm

首先需要定位是在哪里确定显示这个页面的。这个页面上有几个标志字符串,例如“Select Writers”。在Eclipse中全局查找,发现这个页面是在webapps->admin->jobs下面的Modules.JSP生成的,其中有这么一个调用(我没用过JSP,猜想和Java语法差不多吧)

<p>
<b>Select Writers</b>
<i>Processors that write documents to archive files</i>
<p>
<%=buildModuleMap(
(ComplexType)settingsHandler.getOrder().getAttribute(
CrawlOrder.ATTR_WRITE_PROCESSORS),
Processor.class,
“Writers”)%>

看样子选择部分就是靠这个buildModuleMap来生成的,这个函数的定义在webapps->admin->includes->modules.jsp(还有一个在webapps->admin->includes->jobcredentials.jsp,但是通过加打印发现调用的是这个)。其中主要有3部分功能,第一部分用于显示现在已经选择的项目,第二部分是统计还有多少可以选择的配置项目,第三部分就是如果判断还有可以选择的配置项目,就显示让用户选择。跟踪发现就是第二部分数出的数字unusedOptions.size()是0,所以第三部分没有得到调用。再向前跟踪,发现第二部分的循环是基于函数第一句的一个变量定义来的,List availableOptions = getOptionsForType(allowableType),这里的availableOptions里面的元素个数是0,造成第二部分也没有执行。现在看起来问题就是出在getOptionsForType(allowableType)没有返回需要的列表。

进入 getOptionsForType函数,基本一眼就可以看出问题了。这个函数里面除了return CrawlJobHandler.loadOptions(optionsFilename);一句有意义的话以外,就是前面的设置变量和后面的Exception处理了。基本猜测就是出了Exception。加打印看了一下(发现Eclipse可以直接修改代码不重启就生效,和解释语言差不多了),果然是在Classpath没有找到需要的文件。看了一下,找相关的Options文件是在Modules相对路径下的,而Modules目录是在conf目录下。在Eclipse里面设置conf为Classpath。再试,在Modules页面中的功能正常了。

简单来看,这真的是一个小问题。但是却用了我差不多4个小时。实际还是网上相关的资源太少了,例如我就没有找到一个详细一些地说如何在Eclipse下配置Heritrix的文章,只好自己写一篇了。而我实际对Eclipase和Heritrix都是新手。本文我写得这么详细,也就是希望能对万一遇到这个问题的朋友有个帮助。也希望大家能一起努力让网上的相关文章逐渐多起来。

Popularity: 49% [?]

Pages: 1 2

3 Responses to “Heritrix的Modules界面不能改变选择项的问题(涉及Scope, Frontier, PreProcessor, Fetcher, Extractor, Writer, PostProcessor)”

  1. 1
    在Windows平台上配置Heritrix的Eclipse开发环境 | 站长工具箱 Says:

    […] 在Classpath标签页中,增加conf为Classpath。这样就可以找到相应的配置文件。否则会遇到奇怪的问题(参见:Heritrix的Modules界面不能改变选择项的问题) […]

  2. 2
    riven Says:

    我正在使用Heritrix,恰好遇到你说的这个问题了,你说的“在Eclipse里面设置conf为Classpath”是不是在ECLIPSE中将CONF目录BULID PATH,然后选择ADD CLASS FOLDER

  3. 3
    admin Says:

    就是这样样子的。
    在Eclipse的Run Dialog中,Classpath标签Table,选中User Entries,然后右边会有Advance选项,选Add External Folder,把你的Conf加进去就行了。

Leave a Reply

You must be logged in to post a comment.