Apache Nutch/Solr で次のエラーが発生します。
java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:354)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
... 5 more
Caused by: java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:93)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:64)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:34)
... 10 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:88)
... 13 more
Caused by: java.lang.NoClassDefFoundError: opennlp/tools/sentdetect/SentenceDetector
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.nutch.plugin.Extension.getExtensionInstance(Extension.java:160)
at org.apache.nutch.indexer.IndexingFilters.<init>(IndexingFilters.java:69)
at org.apache.nutch.indexer.IndexerMapReduce.configure(IndexerMapReduce.java:62)
... 18 more
Caused by: java.lang.ClassNotFoundException: opennlp.tools.sentdetect.SentenceDetector
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)
... 26 more
2012-04-24 13:59:18,713 ERROR solr.SolrIndexer - java.io.IOException: Job failed!
OpenNLP の SentenceDetector クラスを使用するように、BasicIndexingFilter.java というフィルター クラスを変更しました。BasicIndexingFilter.java の関連部分:
SentenceDetector sentenceDetector = null;
InputStream modelIn = null;
try {
// Loading sentence detection model
modelIn = getClass().getResourceAsStream("/models/sentdetect/en-sent.bin");
final SentenceModel sentenceModel = new SentenceModel(modelIn);
modelIn.close();
sentenceDetector = new SentenceDetectorME(sentenceModel);
} catch (final IOException ioe) {
LOG.info("Model input error");
ioe.printStackTrace();
} finally {
if (modelIn != null) {
try {
modelIn.close();
} catch (final IOException e) {} // oh well!
}
}
これを build.xml ファイルに追加しました。
<property name="lib.dir" value="lib"/>
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
現在は正常にコンパイルされていますが、実行時エラーが発生します。私はJavaが初めてですが、ロードしようとしているモデルファイルと関係があると思います:
modelIn = getClass().getResourceAsStream("/models/sentdetect/en-sent.bin");
opennlp-tools-1.5.0.jar
SentenceDetector クラスの は my にあり./lib folder
、モデル ファイルen-sent.bin
は にあり.lib/models/sentdetect
ます。BasicIndexingFilter クラスは別の場所にあり、すべて Nutch の bin ファイルから実行されています。
モデルファイルを指すのに問題がありますか、それとも何か他のものですか?