【问题标题】:ClassCastException with webapp between machinesClassCastException 与机器之间的 webapp
【发布时间】:2011-08-18 00:25:58
【问题描述】:

我目前有一个使用 Eclipse Galileo 和 m2Eclipse 在我的笔记本电脑上运行的 maven webapp,该应用程序启动并运行良好。

我刚刚将 svn 中的代码检查到我的桌面并将其导入到 Eclipse Helios 和 m2Eclipse(这次在 64 位窗口上运行)

但是,当我启动服务器和应用程序时,当我导航到我的 web 应用程序时出现以下错误:

org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/views/index2.jsp'.
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:691)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:643)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:626)
    at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322)
    at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:100)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:473)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:466)
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:315)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:179)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    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.ClassCastException: org.apache.el.ExpressionFactoryImpl cannot be cast to javax.el.ExpressionFactory
    at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:180)
    at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:107)
    at org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:78)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:109)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:339)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:473)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
    at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
    ... 36 more

我遇到了一些初期问题,即我的 Maven_dependency 库未包含在我的首选项的部署程序集选项中(以前在 Eclipse pre-Helios 中为“Java EE 模块”),但它正在启动,并且找不到有关此错误的任何信息。

我的第一个想法是,当我将所有 JAR 从 mvn 下载到一个干净的存储库时,它可能会拉下一些不同的东西?我看不出如何为这个类使用两个不同的 org.apache.el.. 和 javax.el... 包?

【问题讨论】:

    标签: java eclipse web-applications maven-2


    【解决方案1】:

    我已经设法弄清了这个问题。和这里的问题类似How to prevent duplicate servlet jar using eclipse+m2eclipse

    问题是使用 M2Eclipse,maven 依赖库包含在 WAR 中(如果从 Eclipse 构建,或者如果您在 Eclipse 中将应用程序部署到 Tomcat,则包含)并且虽然 maven 构建仍然正常运行,但 M2Eclipse 没有尊重库的范围,所以如果你“提供”了范围依赖,它们仍然会被部署,所以你可以得到这些冲突。

    您可以在此处查看更多详细信息:How to prevent duplicate servlet jar using eclipse+m2eclipse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2021-09-26
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多