Friday, 15 July 2011

spring - Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext -



spring - Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext -

i trying setup junit test mockmvc.

from link - "either must not utilize servlet api or need provide on classpath".

i added next pom.xml didn't work. idea?

<dependency> <groupid>javax.servlet</groupid> <artifactid>javax.servlet-api</artifactid> <version>3.1.0</version> <scope>provided</scope> </dependency>

here trace

org.springframework.beans.beaninstantiationexception: not instantiate bean class [org.springframework.test.context.web.webdelegatingsmartcontextloader]: constructor threw exception; nested exception java.lang.noclassdeffounderror: javax/servlet/servletcontext @ org.springframework.beans.beanutils.instantiateclass(beanutils.java:163) @ org.springframework.beans.beanutils.instantiateclass(beanutils.java:105) @ org.springframework.beans.beanutils.instantiateclass(beanutils.java:130) @ org.springframework.test.context.contextloaderutils.resolvecontextloader(contextloaderutils.java:118) @ org.springframework.test.context.contextloaderutils.buildmergedcontextconfiguration(contextloaderutils.java:594) @ org.springframework.test.context.contextloaderutils.buildmergedcontextconfiguration(contextloaderutils.java:560) @ org.springframework.test.context.testcontext.<init>(testcontext.java:99) @ org.springframework.test.context.testcontextmanager.<init>(testcontextmanager.java:117) @ org.springframework.test.context.junit4.springjunit4classrunner.createtestcontextmanager(springjunit4classrunner.java:119) @ org.springframework.test.context.junit4.springjunit4classrunner.<init>(springjunit4classrunner.java:108) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ org.junit.internal.builders.annotatedbuilder.buildrunner(annotatedbuilder.java:31) @ org.junit.internal.builders.annotatedbuilder.runnerforclass(annotatedbuilder.java:24) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:57) @ org.junit.internal.builders.alldefaultpossibilitiesbuilder.runnerforclass(alldefaultpossibilitiesbuilder.java:29) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:57) @ org.junit.internal.requests.classrequest.getrunner(classrequest.java:24) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:63) caused by: java.lang.noclassdeffounderror: javax/servlet/servletcontext @ org.springframework.test.context.web.webdelegatingsmartcontextloader.<init>(webdelegatingsmartcontextloader.java:36) @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) @ java.lang.reflect.constructor.newinstance(constructor.java:526) @ org.springframework.beans.beanutils.instantiateclass(beanutils.java:148) ... 22 more caused by: java.lang.classnotfoundexception: javax.servlet.servletcontext @ java.net.urlclassloader$1.run(urlclassloader.java:366) @ java.net.urlclassloader$1.run(urlclassloader.java:355) @ java.security.accesscontroller.doprivileged(native method) @ java.net.urlclassloader.findclass(urlclassloader.java:354) @ java.lang.classloader.loadclass(classloader.java:424) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:308) @ java.lang.classloader.loadclass(classloader.java:357) ... 28 more`enter code here`

ok, updated based on comments, changed scope compile seems pass issue of class not found!

<dependency> <groupid>javax.servlet</groupid> <artifactid>javax.servlet-api</artifactid> <version>3.1.0</version> <scope>compile</scope> </dependency>

class not found @ runtime available @ compile time. need add together corresponding jar can found @ runtime. utilize ivy , in eclipse

project -> properties ->deployment assembly -> add together -> java build path enteries -> ivy -> finish

there must similar maven well.

also need javax.servlet-api during compile time container using run server provide actual apis @ runtime.

java spring junit

No comments:

Post a Comment