-2

好吧,我正在尝试使用 Lucene 索引我的数据库,这是代码.. 我只是收到 1 个错误,无法弄清楚它是什么.. 这是我收到的错误“kel.java:45: error : 未报告的异常 IOException; 必须被捕获或声明为抛出 jdbcDir.create();"

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;

import org.apache.lucene.store.jdbc.JdbcDirectory;

import org.apache.lucene.store.jdbc.dialect.MySQLDialect;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.io.IOException;

public class kel
  {

    public static void main(String[] args)
    {
  //code snippet to create index  
   MysqlDataSource dataSource = new MysqlDataSource();

   dataSource.setUser("root");

   dataSource.setPassword("n");

   dataSource.setDatabaseName("lol");

    dataSource.setEmulateLocators(true); //This is important because we are dealing with a blob type data field  

   JdbcDirectory jdbcDir = new JdbcDirectory(dataSource, new MySQLDialect(), "ii");


   jdbcDir.create();


   }

}
4

2 回答 2

0

您必须将行括jdbcDir.create()在一个try-catch块内,

try {
   jdbcDir.create();
}
catch(IOException ioe){
  ioe.printStackTrace();
  logger.error(ioe.getMessage(),ioe); // if logger is implemented
}

或者让你main(String[] args)扔掉IOException。(不建议)

public static void main(String[] args) throws IOException

查看JdbcDirectory#create()方法的文档:

抛出:

IO异常

由于该方法抛出一个检查异常,因此您需要通过在 a 中包含潜在的异常抛出行来在代码中处理它,try-catch或者通过在方法声明中添加一个 throws 来通知调用您的方法的代码,该方法包含潜在的异常抛出行。

于 2013-06-25T07:23:14.700 回答
0

IOException是一个检查异常。这意味着它必须被捕获,使用try-catch异常或使用throws语句抛出。

于 2013-06-25T07:23:48.767 回答