0

docx4j を使用して .docx ファイルを解析するように設定した Java クラスからいくつかのメソッドを呼び出そうとする groovy ファイルがあります。

Eclipse で純粋な Java テスト プログラムをセットアップすると、問題なく実行できます。ただし、.groovy ファイルをセットアップすると、コンパイル エラーは発生しませんが、実行時に次のスタック トレースが表示されます。

 org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: org/docx4j/wml/RPr

at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)

at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)

 Caused by: java.lang.NoClassDefFoundError: org/docx4j/wml/RPr

at java.lang.Class.getDeclaredMethods0(Native Method)

at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)

at java.lang.Class.getDeclaredMethods(Class.java:1763)

at java.security.AccessController.doPrivileged(Native Method)

at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:33)

at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:20)

at ResumeController$_closure8.doCall(ResumeController.groovy:119)

at ResumeController$_closure8.doCall(ResumeController.groovy)

私は問題が何であるかを完全に理解することはできません.thre groovyファイルの関連部分は次のとおりです:

 import mypackage.DocxHelpers.DocxParser;
 import org.docx4j.*;
 class ResumeController{
 def save = {

    File f=new File('c:/dev/temp/test.docx');
    uploadedFile.transferTo(f);

    DocxParser doc=new DocxParser(); //line 119
    def resume=doc.openDocx4j(f);
    f.delete();
    resumeInstance.entireResume=resume;
    flash.message="Resume parsed";
    render(view:'create',model:[resumeInstance:resumeInstance]);

 }
 }

DocxParser に関連する私の Java はプロジェクト フォルダーの下の src フォルダーにあり、docx4j jar は lib フォルダーにあります。

インポートの定義が間違っているだけですか、それともファイルが間違った場所にありますか?

4

2 に答える 2

0

見つからないクラスは org.docx4j.wml パッケージにあるようですが、インポート ステートメントは org.docx4j パッケージを参照しています。インポートを に変更してみてくださいimport org.docx4j.wml.*;

于 2010-09-07T14:48:27.053 に答える
0

docx4jランタイム クラスパスに JARがないようです。上記のコードは、Grails コントローラーに属しているようです。によって参照されるクラスが Grailsディレクトリの JARNoClassDefFoundError内に存在することを確認しましたか?docx4j/lib

于 2010-09-07T14:36:16.627 に答える