2010-08-24 148 views
0

我试图用Spring 2 + Struts 2 + Hibernate 3 arquitecture项目启动,但在Eclipse(Helios版本)中将其部署到Apache Tomcat 6.0时出现异常, 。在Apache Tomcat中部署Spring 2应用程序的问题6

Tomcat的在启动例外:

GRAVE: Error configurando escuchador de aplicación de clase org.springframework.web.context.ContextLoaderListener 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext listenerStart 
GRAVE: Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s) 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext start 
GRAVE: Error listenerStart 
24-ago-2010 12:22:04 org.apache.catalina.core.StandardContext start 
GRAVE: Falló en arranque del Contexto [/web] debido a errores previos 

的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="struts_blank" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Struts Blank</display-name> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring.xml</param-value> 
    </context-param> 

    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

我GOOGLE了很长一段时间,我想,我发现了一些可能的解决方案,但他们都没有奏效。 我要解释一下我尝试并取得了异常:

第一种方式: 在Tomcat服务器配置,Classpath选项卡中,我加入项目中使用弹簧网络2.5.1.jar(一样的)作为Bootstrap Entries部分中的外部jar。 然后,当开始

GRAVE: Error configurando escuchador de aplicación de clase org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener 
    at java.lang.ClassLoader.findBootstrapClass(Native Method) 
    at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:900) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:316) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:314) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext listenerStart 
GRAVE: Se ha saltado la instalación de escuchadores de aplicación debido a error(es) previo(s) 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext start 
GRAVE: Error listenerStart 
24-ago-2010 12:42:36 org.apache.catalina.core.StandardContext start 
GRAVE: Falló en arranque del Contexto [/web] debido a errores previos 

所以我补充说,在同一地点和方式,servlet的API-2.4.jar当阿帕奇触发此异常。然后我得到以下异常:

INFO: Starting Servlet Engine: Apache Tomcat/6.0.29 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String; 
    at org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener.lifecycleEvent(StandardHost.java:561) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4625) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
    ... 6 more 

方式二: 在Classpath选项卡中添加我的项目,我得到早些时候发布相同的异常(java.lang.reflect.InvocationTargetException)。

为什么Apache Tomcat不能正确读取项目库?也许我忽略了一些东西,或者有什么不对。 你能帮我解决吗?我会提供你需要的所有信息。

任何帮助将受到欢迎。

回答

1

将Eclipse中的jar文件部署到Tomcat时出现问题。我相信有更好的方法来解决它,而我发现它解决了它生成war文件并将其部署到独立安装的Apache Tomcat上。

0

通过投入班组长进口org.springframework.web.context.ContextLoaderListener检查这个...如果不是比现有的增加适当的罐子..

+1

你是对的,但是当我将它包含在classpath中时,我收到了另一个异常,正如我在消息中所说的。感谢您的回复 – CraicFinder 2010-08-30 10:29:32

0

你不能只对自己添加spring-web-2.5.1.jar,你需要一个一堆其他Spring JAR与它一起进行,例如spring-core,spring-beans,spring-context,spring-context-support,也许spring-webmvc。更好的是,玩起来很安全,并使用全合一spring.jar

哦,和Spring 2.5.1是古代。至少升级到2.5.6,或者最好3.0.x.

+0

我只是将所有图书馆都包括在内,因为它以第二种方式进行了解释,但它仍不起作用。感谢您的回复 – CraicFinder 2010-08-30 10:27:49

1

您不能在tomcat web应用程序中包含servlet-api jar。尝试删除它。

1

在问候的

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String; 

这个核心问题肯定是由具有在classpath中某处的servlet-api.jar文件的早期版本引起。我有完全相同的问题;我是由commons-logging造成的。

为了解决这个问题,我不得不做以下我的pom.xml

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.1</version> 
    <exclusions> 
    <exclusion> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
    </exclusion> 
    </exclusions>  
</dependency> 
0

我也碰到了这个问题。尝试使用%TOMCAT_HOME%/lib/servlet-api.jar而不是其他罐子(包含程序包javax.servlet,例如javaee.jar)重新编译您的项目。也许这可以解决你的问题。

相关问题