2016-07-08 23 views
1

私は困惑しています。このスクリプトは、ファイルパスをハードコードすると、Windowsマシン上でEclipseでうまく動作します。私が引数を取り込み、それを私のエッジノード(Linuxボックス)で実行しようとすると、特別なエラーは発生しませんが、空の出力ファイルが残ってしまいます。私は何か愚かな行方不明でなければならないが、私はそれを見ていない。誰が何が起こっているか考えている?Apache Tika - PrintWriterはローカルWindowsマシンで動作しますが、Linuxボックスでは動作しません。

package com.trv.cbia.de.tika; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.UnsupportedEncodingException; 

import org.apache.tika.exception.TikaException; 
import org.apache.tika.metadata.Metadata; 
import org.apache.tika.metadata.TikaCoreProperties; 
import org.apache.tika.parser.AutoDetectParser; 
import org.apache.tika.parser.ParseContext; 
import org.apache.tika.parser.Parser; 
import org.apache.tika.sax.BodyContentHandler; 
import org.xml.sax.SAXException; 

import java.io.InputStream; 
import java.util.HashMap; 
import java.util.Map; 


public class DocParser { 

public Map<String, Object> processRecord(String path) { 
    Map<String, Object> map = new HashMap<String, Object>(); 
    String docPath = path; 
    try{ 
      BodyContentHandler handler = new BodyContentHandler(); 
      Metadata metadata = new Metadata(); 
      InputStream inputstream = new FileInputStream(new File(docPath)); 
      ParseContext pcontext = new ParseContext(); 
      Parser pdfparser = new AutoDetectParser(); 
      pdfparser.parse(inputstream, handler, metadata, pcontext); 
      map.put("text", handler.toString().replaceAll("\n|\r|\t", " ")); 
      map.put("title", metadata.get(TikaCoreProperties.TITLE)); 
      map.put("pageCount", metadata.get("xmpTPg:NPages")); 

    } catch (IOException ex){ 
     System.out.println("Caught IOException:" + ex.getMessage()); 
    } 
    catch(TikaException tx) { 
     System.out.println("Caught TikaException: " + tx.getMessage()); 
    } 
    catch(SAXException sx){ 

     System.out.println("Caught SAXException: " + sx.getMessage()); 

     } 

    return map; 
} 

public static void main(String args[]){ 


    String file = args[0]; 
    String out = args[1]; 
    DocParser textExtract = new DocParser(); 
    Map<String, Object> extractedMap = textExtract.processRecord(file); 
    try { 
     PrintWriter writer = new PrintWriter(out,"UTF-8"); 
     writer.println(extractedMap.get("text")); 
     writer.flush(); 
     writer.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

} 

} 
+0

あなたはプログラムに渡す引数は何ですか? – ck1

+0

/path/to/file.docxと/path/to/output.txt – SQLSuperVillain

+1

'extractedMap.get(" text ")'の値が空の文字列であれば、それは空のファイルを説明します。それをデバッグできますか? – ck1

答えて

0

私はクラスパスにtika-app-1.13.jarを追加する必要がありました。クラスパスのエラーを漏らしたことはありませんでした。私は同じ問題を抱えている誰かを見つけるために、複数のApacheのメーリングリストを掘り下げなければならなかった。他の誰かがそれを横断している場合に備えて、ここにソリューションを投稿してください。

関連する問題