2012-04-06 5 views
0

このコードを実行しようとすると、次の例外が発生します。Apacheを使用して.docファイルを作成してフォーマットするときにNoSuchMethod例外が発生するpoi-3.8 beta hwpf

java.lang.NoSuchMethodError: org.apache.poi.POIDocument.< init >

コードスニペット:

try { 

    File file = new File(externalPath + "/abc.doc"); 
    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file)); 
    HWPFDocument doc = new HWPFDocument(fs); 
    Range range = doc.getRange(); 
    CharacterRun run = range.insertAfter("Hello World!"); 
    run.setFontSize(2 * 18); 
    run.setBold(true); 
    run.setItalic(true); 
    run.setCapitalized(true); 
    OutputStream out = new FileOutputStream(new File(externalPath + "/agnew.doc")); 
    doc.write(out); 
    out.flush(); 
    out.close(); 

} catch (Exception ex) { 
    Log.e("Exception==","=="+ex.toString()); 
     ex.printStackTrace(); 
} 

Logcat:

Logcat : FATAL EXCEPTION: main : java.lang.NoSuchMethodError: org.apache.poi.POIDocument. : 
at org.apache.poi.hwpf.HWPFDocumentCore.(HWPFDocumentCore.java:145) : 
at org.apache.poi.hwpf.HWPFDocument.(HWPFDocument.java:218) : 
at org.apache.poi.hwpf.HWPFDocument.(HWPFDocument.java:186) : 
at com.vikas.prudent.CreateDocument.onCreate(CreateDocument.java:45) : 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) : 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) : 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) : 
at android.app.ActivityThread.access$2300(ActivityThread.java:125) : 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) : 
at android.os.Handler.dispatchMessage(Handler.java:99) : 
at android.os.Looper.loop(Looper.java:123) : 
at android.app.ActivityThread.main(ActivityThread.java:4627) : 
at java.lang.reflect.Method.invokeNative(Native Method) : 
at java.lang.reflect.Method.invoke(Method.java:521) : 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) : 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) : 
at dalvik.system.NativeStart.main(Native Method) 

答えて

0

だけ例外を見て、libにバージョン不整合であるように思われます。 HWPFDocumentCore.java:145が新しいPOIDocumentを構築しようとしていますが、呼び出す予定のコンストラクタが見つからないようです。私はHWPFDocumentCore.javaの145行目を見て、それが期待しているコンストラクタを見ていきます。次にPOIDocumentにそのようなコンストラクタを持つPOIライブラリを探します。

0

classpathにApache POIのコピーが2つあり、古いものと新しいものがあるようです。あなたのHWPF jar(Scratchpad)は新しいものですが、古いコアPOI jarを取り上げているので、例外を受けています。

あなたがする必要があることは、クラスパス上のすべてのジャーを見直し、POI関連のジャーを特定して、それらの一貫したセットを確実に持つことです。

POI FAQにはand entry on this very problemがあり、POIクラスがどのjarから来るかを印刷するために使用できるJavaコードもあります。誤ったジャーを直接見つけることができない場合は、そこに示されているコードのようなものをあなたのアンドロイドコードに移植して、古いジャーを見つけるのを助けてください。

関連する問題