我现在已经在网上阅读了几个小时的信息,而且我很茫然。
我已经成功地在一个servlet中使用Axis2运行Tomcat 7。我可以很好地查看基于非弹簧的jsps。在我尝试整合弹簧的那一刻,整个事情都破裂了。我的服务器日志给出了以下错误。
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1591)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4638)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
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 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 25 more
我有Spring 3.1.0.M1,并且jar在Axis2的类路径中(%AXIS2CLASSPATH%),而对于Tomcat,则通过工具栏的工具界面进行配置。这一切都在Windows 7 x64上完成。
我正在尝试使用Axis2工作的pojoguidespring样本。
这是一个干净的安装,所以如果需要,我可以把它拆掉。有人可以给我一些详细的指示吗?我在这里疯了。
提前致谢。
编辑:
虽然javax/servlet/ServletContextListener
不是Spring类,但只有当我在web.xml中包含Springs上下文配置信息时才会调用它,就像这样
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
servlet-api.jar位于Axis2和Tomcat的类路径(lib目录)中。检查jar表明javax/servlet/ServletContextListener
绝对可用。我可以得到另一个建议吗?
答案 0 :(得分:2)
javax/servlet/ServletContextListener
不是Spring类;它是应该与Tomcat一起提供的servlet.jar的一部分。
%AXIS2CLASSPATH%
向我建议您依赖于CLASSPATH的环境变量。这是一个坏主意。如果你把你需要的JAR放在适当的位置,Tomcat应该能够管理好一切。无需环境变量或更改任何启动脚本。
你的CLASSPATH坏了;我解决了这个问题。