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

参考: 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。

 

 

原文地址:https://www.cnblogs.com/XDJjy/p/4323642.html