1

Je travaille sur un projet grails et j'ai mis un fichier .jar dans le répertoire lib du projet.ClassNotFoundException pour une classe mais pas une autre pour le même package?

Je continue d'obtenir une exception d'exécution pour ClassNotFoundException dans un de mes fichiers java que j'utilise dans le projet grails.

je une méthode définie en tant que telle:

void printValues(org.docx4j.wml.ParaRPr rpr){ 
} 

et j'ai et la section d'importation qui ressemble

import org.docx4j.openpackaging.exceptions.Docx4JException; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
import org.docx4j.wml.Body; 
import org.docx4j.wml.Style; 

C'est ce qui jette l'exception.

Cependant, si je change ma méthode pour être comme

void printValues(org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart rpr){ 
} 

Je ne reçois pas exception d'exécution.

Que pourrait-il se passer ici? J'ai vérifié que le fichier docx4j.jar contient ParaRPr, et c'est le cas. J'ai vérifié que ces classes sont publiques, et elles le sont. Aussi, j'ai essayé différentes classes du répertoire org.docx4j.wml, et certaines me donnent l'exception, et d'autres pas. Comment est-ce possible?

Voici la pleine stacktrace:

2010-09-15 12:37:00,198 [http-8080-1] ERROR errors.GrailsExceptionResolver - org.docx4j.wml.ParaRPr 
java.lang.ClassNotFoundException: org.docx4j.wml.ParaRPr 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 
    at java.lang.Class.getDeclaredMethods(Class.java:1791) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46) 
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33) 
    at javatest.ResumeController$_closure4.doCall(ResumeController.groovy:47) 
    at javatest.ResumeController$_closure4.doCall(ResumeController.groovy) 
    at java.lang.Thread.run(Thread.java:619) 
    [groovyc] Compiling 1 source file to C:\dev\JavaTest\target\classes 

Voici la sortie du pot tf sur le fichier jar - montrant la classe ParaRPr là

$ jar -tf docx4j-nightly-20100914.jar | grep Para 
org/docx4j/dml/CTTextParagraph.class 
org/docx4j/dml/CTTextParagraphProperties.class 
org/docx4j/dml/diagram/CTParameter.class 
org/docx4j/dml/diagram/STParameterId.class 
org/docx4j/math/CTOMathPara.class 
org/docx4j/math/CTOMathParaPr.class 
org/docx4j/model/properties/paragraph/AbstractParagraphProperty.class 
org/docx4j/wml/CTParaRPrOriginal.class 
org/docx4j/wml/ParaRPr.class 
org/docx4j/wml/ParaRPrChange.class 
org/pptx4j/pml/CTTLBuildParagraph.class 
org/pptx4j/pml/CTTLTimeNodeParallel.class 
org/pptx4j/pml/STTLParaBuildType.class 
org/xlsx4j/sml/CTParameter.class 
org/xlsx4j/sml/CTParameters.class 
org/xlsx4j/sml/STParameterType.class 
+1

S'il vous plaît poster la ** stacktrace ** complète. Surtout les * causes de cause * sont les plus importantes. – BalusC

+0

full stacktrace posté – Derek

Répondre

1

docx4j a un certain nombre de dépendances comme décrit ici: http://dev.plutext.org/trac/docx4j/wiki/Docx4jDependencies

Il ressemble ParaRPr implémente l'enfant qui est en org.jvnet.jaxb2_commons Je crois que votre environnement d'exécution manque le pot qui a des enfants

+0

C'est exactement ce que c'était. Bon appel. Maintenant, je sais comment commencer à déboguer ce genre de choses dans le futur – Derek

1

yould pourrait manquer un pot sur dont dépend docx4j.jar.

+0

+1: Bien que l'exception ClassNotFound devrait noter que - il devrait dire quelque chose comme "Erreur lors du chargement de la classe org.docx4j.wml.ParaRPr - Impossible de trouver la dépendance X" ou quelque chose de similaire (la syntaxe exacte m'échappe au moment). – aperkins

+0

Hrmm, j'aurais pensé aussi. Je viens de poster stacktrace. – Derek

+0

Il semblerait que si je peux voir les fichiers dont il se plaint dans le .jar, alors ça devrait aller, non? – Derek

Questions connexes