2010-09-07 13 views
0

J'ai un fichier groovy qui tente d'appeler des méthodes d'une classe Java que j'ai mis en place à l'aide docx4j pour analyser .docx fichiersnoClassDefFound essayer d'utiliser la classe java et docx4j du contrôleur Grails

Quand je mis en place un programme de test pur java en éclipse, je suis capable de le faire très bien. Cependant, quand j'ai mon fichier .groovy mis en place, je reçois aucune erreur de compilation, mais lors de l'exécution, je reçois cette trace de la pile:

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) 

Je ne peux pas comprendre tout à fait ce que le problème est - ici est la pertinente partie du thre fichier 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]); 

} 
} 

My stuff java est lié à DocxParser dans le dossier src dans mon dossier de projet, et le pot de docx4j est dans le dossier lib.

Mes importations sont-elles simplement définies incorrectement ou les fichiers sont-ils au mauvais endroit?

+0

votre code java est sur le répertoire src/java ... et les informations sur le paquetage et les importations ont été vérifiées dans ces fichiers? –

Répondre

0

Il semble que vous n'ayez pas les fichiers JAR docx4j sur votre chemin d'accès à la classe. Le code ci-dessus semble appartenir à un contrôleur Grails. Avez-vous vérifié que la classe référencée par le NoClassDefFoundError est présente dans le (s) JAR docx4j dans le répertoire Grails /lib?

+0

oui, c'est là – Derek

0

Il semble que cette classe introuvable se trouve dans le package org.docx4j.wml, mais l'instruction import fait référence au package org.docx4j. Essayez de changer l'importation en import org.docx4j.wml.*;.

+0

essayé que ..get même erreur – Derek