java - spring mvc webapp 在eclipse 中运行但在独立tomcat 中部署时生成异常

标签 java spring-mvc tomcat

如标题中所述,我的应用程序使用的是 SpringMVC 和 apache Tiles 3。它在 eclipse IDE 的服务器中运行时运行良好,但当我导出 war 文件并将其部署在独立的 tomcat 实例中时,它部署正常,但是当我访问它我有以下异常。 (请注意,eclipse 中的服务器与我部署 webapp 的服务器相同)。

> exception
> 
> javax.servlet.ServletException: Could not resolve view with name
> 'login' in servlet with name 'dispatcher'
>   org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
>   org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
>   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
>   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
>   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
>   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
>   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>   org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
>   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
>   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
>   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
>   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
>   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
>   org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
>   org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
>   org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
>   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

更新:非常感谢@Fredlo2010。我已经看到你提到的链接

这是我的 web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Project</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

并且jSTL依赖已经在pom.xml文件中

在其中一个答案中,有人指出如果项目位置包含空间并且如果 Jetty 与 apache tiles 和 spring 的 View 解析器结合使用(这不是我的情况),则项目位置可能会出现问题。然而,为了消除任何疑问,我认为我应该试一试。现在我想知道我应该在哪里将我的项目位置更改为没有空格的路径。任何帮助都将不胜感激。

我做错了什么?提前谢谢你。

最佳答案

我无法确认它是否是由项目位置路径中的空间引起的,但是从 Apache Tiles 3.0.3 升级到 3.0.5 解决了我的问题。

也许这可以帮助面临同样问题的人

关于java - spring mvc webapp 在eclipse 中运行但在独立tomcat 中部署时生成异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44842958/

相关文章:

java - 尝试使用 HTTPPOST 时出现与 doInBackground 相关的异步错误

tomcat - Spring rabbit启动不让Tomcat关闭的SimpleAsyncTaskExecutor线程

java - 请给我 Spring、Hibernate 的真实世界项目

java - 页面之间重定向 - Spring MVC

python - python 中的 "Permission Denied"从 jenkins 复制文件,而不是从 shell

apache - 如何在 Apache Tomcat 服务器上部署 IntelliJ IDEA 项目?

java - 如何强制在 primefaces 中重新加载页面?

java - 如何在 Spring Boot 应用程序的 Feign 客户端上使用 WireMock?

java - 实体类和记录锁定

java - 我可以在获取 @ModelAttribute 作为此方法参数的方法中使用 MockMvc 检查什么?