2017-02-22 13 views
0

が私のコードです:SparkとStandford NLPを使用してJavaコードを実行しているときに、この例外が発生するのはなぜですか?ここで

try 
{ 

    Dataset<Row> df = spark.sql("select answer from health where limit 1"); 

    nameAndCity = df.toJavaRDD().map(new Function<Row, String>() { 

    // @Override 
     public String call(Row row) { 
      return row.getString(0); 
     } 
    }).collect(); 

} 

catch (Exception AnalysisException) 
{ 
    System.out.print("\nTable is not found\n"); 
} 
spark.close(); 
System.out.println("Spark Done....!"); 
for (String name : nameAndCity) 
{ 

    Annotation document = new Annotation(name); 
    Properties props = new Properties(); 
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,parse,sentiment"); 
    //props.setProperty("parse.binaryTrees","true"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
    pipeline.annotate(document); 
    for (CoreMap sentence : document.get(CoreAnnotations.SentencesAnnotation.class)) { 
     System.out.println("---"); 
     System.out.println("Sentence Analyzed: " + " " + sentence.get(CoreAnnotations.TextAnnotation.class)); 
     System.out.println("Reflected sentiment: " + " " + sentence.get(SentimentCoreAnnotations.SentimentClass.class)); 
    } 

} 

このコードを実行した後、私は次の例外を取得:

Exception in thread "main" edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException: Error creating edu.stanford.nlp.time.TimeExpressionExtractorImpl 
    at edu.stanford.nlp.util.ReflectionLoading.loadByReflection(ReflectionLoading.java:40) 
    at edu.stanford.nlp.time.TimeExpressionExtractorFactory.create(TimeExpressionExtractorFactory.java:57) 
    at edu.stanford.nlp.time.TimeExpressionExtractorFactory.createExtractor(TimeExpressionExtractorFactory.java:38) 
    at edu.stanford.nlp.ie.regexp.NumberSequenceClassifier.<init>(NumberSequenceClassifier.java:86) 
    at edu.stanford.nlp.ie.NERClassifierCombiner.<init>(NERClassifierCombiner.java:136) 
    at edu.stanford.nlp.pipeline.AnnotatorImplementations.ner(AnnotatorImplementations.java:121) 
    at edu.stanford.nlp.pipeline.AnnotatorFactories$6.create(AnnotatorFactories.java:273) 
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:152) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:451) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:154) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:150) 
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:137) 
    at spark.sparkhive.queryhive.main(queryhive.java:64) 
Caused by: edu.stanford.nlp.util.MetaClass$ClassCreationException: MetaClass couldn't create public edu.stanford.nlp.time.TimeExpressionExtractorImpl(java.lang.String,java.util.Properties) with args [sutime, {}] 
    at edu.stanford.nlp.util.MetaClass$ClassFactory.createInstance(MetaClass.java:237) 
    at edu.stanford.nlp.util.MetaClass.createInstance(MetaClass.java:382) 
    at edu.stanford.nlp.util.ReflectionLoading.loadByReflection(ReflectionLoading.java:38) 
    ... 12 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at edu.stanford.nlp.util.MetaClass$ClassFactory.createInstance(MetaClass.java:233) 
    ... 14 more 
Caused by: java.lang.NoClassDefFoundError: de/jollyday/ManagerParameter 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at edu.stanford.nlp.time.Options.<init>(Options.java:87) 
    at edu.stanford.nlp.time.TimeExpressionExtractorImpl.init(TimeExpressionExtractorImpl.java:44) 
    at edu.stanford.nlp.time.TimeExpressionExtractorImpl.<init>(TimeExpressionExtractorImpl.java:39) 
    ... 19 more 
Caused by: java.lang.ClassNotFoundException: de.jollyday.ManagerParameter 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 24 more 
17/02/22 18:26:39 INFO ShutdownHookManager: Shutdown hook called 
17/02/22 18:26:39 INFO ShutdownHookManager: Deleting directory /tmp/spark-23b5fac2-27ec-44a6-9ff7-cb2b8bfd8753 

なぜ私はこの例外を取得していますし、私はそれを解決するために何をすべきでしょうか?あなたのプログラムは、このクラスを探しているが、それを見つけることができません

java.lang.NoClassDefFoundError: de/jollyday/ManagerParameter 

+1

「de.jollyday.ManagerParameter」のいずれかが見つからないか、読み込み中に問題が発生しています(バージョンの不一致など)。 –

+0

優れた観察。 –

+0

途中で文字列から再び 'CoreMap'にmap()することができます。 NLPの機能の後までcollect()は必要ありません –

答えて

1

この1つはあなたのトラブルの元です。クラスパスを確認してください。

元の例外に対する反応だけであるため、上記の例外は出力で無視することができます。

  • ReflectionLoadingExceptionは、loadByReflectionというメソッドによってスローされるため、何らかの種類のラッパー例外であると思われがちです。
  • 次に、同じ状況のcreateInstanceによってClassCreationExceptionがスローされました。一般的に、doSomethingExceptionをスローするdoSomethingというメソッドがある場合、例外は問題の内容を正確に伝えるか( "x => 100でなければならないか")、実際の例外をラップします。
  • InvocationTargetExceptionは、リフレクションを使用してメソッドを呼び出そうとしたときにJVMがスローし、そのメソッドが例外をスローする場合の例外です。これは実際の例外の単なるラッパーです。
  • 最後に、実際の例外NoClassDefFoundErrorが発生します。
+0

あなたの答えをありがとうございます。 –

関連する問題