《Lucene实战(第2版)》 配书代码在IDEA下的编译方法

时间:2023-02-02 23:48:36
参考: hankcs
http://www.hankcs.com/program/java/lucene-combat-2nd-edition-book-with-code-compiled-under-the-idea.html

最基础的Ant编译:

点击右边的加号载入lia2e下的build.xml脚本,接着在列表里双击某单元对应的程序就行了:

通过IDEA Configuration编译运行:

新建一个控制台配置,选择主类:

编译运行报错:

java: 找不到符号

符号:   方法 next()

位置: 类型为org.apache.lucene.analysis.TokenStream的变量 ts

这是因为lia/analysis/nutch/NutchExample.java需要使用Lucene 2.4.0,但是配书代码用的是3.0:

<!– Nutch uses Lucene 2.4.0, but the rest of the sources use 3.0.0,

so we set up a separate compile target & classpath –>

解决方案是注释掉NutchExample,在第四章要用到的话再改回了来用Ant编译。

接下来编译成功,运行出错:

Exception in thread "main" java.lang.NullPointerException
at java.io.File.<init>(File.java:277)
at lia.meetlucene.Indexer.<init>(Indexer.java:68)
at lia.meetlucene.Indexer.main(Indexer.java:52)

少了两个参数而已,改成:

  public static void main(String[] args) throws Exception {
args = new String[2];
args[0] = "E:/xiaodajun/new/lia2e/src/lia/meetlucene";
args[1] = "E:/xiaodajun/new/lia2e/src/lia/meetlucene/data";//"src/lia/meetlucene/data";

写成相对地址时,仍然不能解决问题,换成据对地址于是就对了。

或是:

参考blog:eclipse ,修改Program arguments。