NoSuchFieldError lorsque vous essayez d'exécuter un test unitaire avec le Printemps
Pour l'instant j'ai deux tests. On utilise uniquement des framework jUnit et fonctionne très bien. L'autre on utilise printemps-bibliothèque de test et crée cette exception à chaque fois que j'essaie de le lancer. Les idées de ce que peut provoquer le problème?
Erreur
java.lang.NoSuchFieldError: NULL
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:48)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:59)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:104)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:27)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Maven test dépendances
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework.version}</version>
<scope>test</scope>
</dependency>
De l'arbre des dépendances
[INFO] [dependency:tree {execution: default-cli}]
[INFO] fake:war:1.0-SNAPSHOT
[INFO] +- log4j:log4j:jar:1.2.16:compile
[INFO] +- org.springframework:spring-web:jar:3.0.5.RELEASE:compile
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.springframework:spring-beans:jar:3.0.5.RELEASE:compile
[INFO] | +- org.springframework:spring-context:jar:3.0.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:3.0.5.RELEASE:compile
[INFO] | | +- org.springframework:spring-expression:jar:3.0.5.RELEASE:compile
[INFO] | | \- org.springframework:spring-asm:jar:3.0.5.RELEASE:compile
[INFO] | \- org.springframework:spring-core:jar:3.0.5.RELEASE:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- commons-codec:commons-codec:jar:1.4:compile
[INFO] +- org.glassfish:javax.faces:jar:2.1.3:compile
[INFO] +- org.richfaces.ui:richfaces-components-ui:jar:4.0.0.Final:compile
[INFO] | +- org.richfaces.ui:richfaces-components-api:jar:4.0.0.Final:compile
[INFO] | \- org.richfaces.core:richfaces-core-api:jar:4.0.0.Final:compile
[INFO] +- org.richfaces.core:richfaces-core-impl:jar:4.0.0.Final:compile
[INFO] | +- net.sourceforge.cssparser:cssparser:jar:0.9.5:compile
[INFO] | | \- org.w3c.css:sac:jar:1.3:compile
[INFO] | \- com.google.guava:guava:jar:r08:compile
[INFO] +- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] +- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] +- javax.xml.bind:jaxb-api:jar:2.2.2:compile
[INFO] | +- javax.xml.stream:stax-api:jar:1.0-2:compile
[INFO] | \- javax.activation:activation:jar:1.1:compile
[INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.2.2:compile
[INFO] +- javax.servlet:jstl:jar:1.1.2:compile
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- org.springframework:spring-test:jar:3.0.5.RELEASE:test
[INFO] +- javax.servlet:jsp-api:jar:2.0:provided
[INFO] \- javax.servlet:servlet-api:jar:2.4:provided
Pour info, je viens de tomber sur ce problème lors de l'exécution avec un chargeur de classe de l'intérieur de l'Éclipse (pas de Ressort).
OriginalL'auteur user219882 | 2011-10-07
Vous devez vous connecter pour publier un commentaire.
Vous utilisez une ancienne version d'Eclipse (Galilée ou avant)? ou une version plus ancienne de la junit plugin? Si oui, cela peut être la cause du problème. ParentRunner est à la recherche de Trieur.NULL, qui a été introduit dans JUnit 4.5:
Si vous n'avez pas ce bout de code, vous êtes probablement à l'aide d'une pré-version 4.5. Sur votre Eclipse, faire Ctrl-Maj-T et de voir si vous avez plusieurs versions de la Trieuse de classe et, dans l'affirmative, assurez-vous que aucun d'entre eux sont pré 4.5. Aussi, regardez dans votre projet d'installation dans votre Chemin, et si il y a JUnit d'entrée (et non le maven version), retirez-la et essayez à nouveau.
EDIT: Cela peut aussi être causée par une dépendance transitive de Maven. Peut-être l'une de vos bibliothèques a une dépendance sur un JUnit version qui est pré-4.5.
woaaa merci!!!!! 🙂
Farwell je suis l'aide de Kepler avec JUnit4.10 et j'ai la ligne ci-dessus dans la Trieuse de diapositives, mais stil je suis
initializationError0 - java.lang.NoSuchFieldError: NULL
Ah!!.. vous avez vraiment sauvé ma journée... Merci
OriginalL'auteur Matthew Farwell
J'ai résolu ce problème, en changeant de JUnit 4.10. L'exception d'origine était:
OriginalL'auteur user2797063
Cela ressemble à elle est causée par le fait que vous avez plusieurs JUnit dépendances (différentes versions) dans votre classpath. Vérifiez votre classpath pour que (si vous êtes unsing maven faire un mvn dependency:tree), puis se débarrasser de la plus ancienne (encore une fois, si vous utilisez maven, savoir qui directlly importés de la dépendance des importations à son tour, le plus âgé JUnit, et de faire un
<exclusion>
sur la dépendance de l'JUnit sous-dépendance dans votre pom.xml). Vous pouvez aussi mettre à jour votre JUnit dépendance à la dernière version qui est (au moins) 4.10.C'était le problème pour moi: junit-dep 4.4 a été une dépendance transitive de org.jmock:jmock-junit4, alors que j'étais dependending sur junit 4.10 directement.
Comment avez-vous résoudre les conflits, à cause de Jmock?
À l'aide d'un mvn exclusion j'imagine, mais c'était il y a longtemps 😉
Pour quelque raison que ce soit, l'exclusion n'est pas de travail pour moi. Grâce tho. Voir: stackoverflow.com/questions/17560153/...
OriginalL'auteur Shivan Dragon
J'ai eu exactement le même problème et j'ai trouvé qu'elle a été causée par une dépendance transitive de org.jmock:jmock-junit4. Il a été trié quand je l'ai remplacé par org.jmock:jmock.
OriginalL'auteur Micho
J'ai eu cette erreur pour la même raison. mais dans mon cas, j'ai été incapable de voir l'autre version de Junits juste en regardant dans mon pom.xml ou maven arborescence du code source de mon projet a été à l'aide de dépendances transitives (entre les projets). i,e projet de "a" a Une dépendance sur le projet "B". donc, le projet "Un" fait directement référence à "B"(à partir de l'espace de travail). alors, quand cela arrive, nous ne serons pas en mesure de déterminer si les différentes version de junit existe dans la dépendance. donc, ce que j'ai fait, j'ai fermé le projet "B". projet supprimé "Une" de l'éclipse (pas à partir de l'espace de travail). dans le projet "Un" répertoire source, supprimez tous les fichiers sauf le pom, de la src et le svn dossier de prise en charge. Re-importer le fichier dans eclipse. Cette résolu le problème.
OriginalL'auteur Shravan Ramamurthy