有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA使用tomcat在jsf应用程序上运行lang.StackOverflowerError

嗨,我正在试图找出stackoverflow错误

我所知道的只是错误的来源

org.apache.catalina.core.ApplicationDispatcher.setAttribute on line 278

但我不知道是什么引起的

跟踪错误的最佳方法是什么?这就像在干草堆里捞针,因为有50多个班级

我如何知道哪个方法调用它来获取错误?(例如,我希望打开调试模式以跟踪此stackoverflow的哪个方法)


共 (4) 个答案

  1. # 1 楼答案

    TOMCAT_HOME/logs/文件夹(tomcat6&;7)中,有一个catalina.yyyy-mm-dd.log文件,其中包含所有记录的消息(包括应用程序引发的异常)。获取最新(今天的)日志文件,并查看引发异常的位置(通常是错误发生的最近时间)

  2. # 2 楼答案

    如果看不到stacktrace和解释/理解重复模式,就很难确定真正的原因

    但是,在JSF Web应用程序中,最常见的初学者错误可能会导致StackOverflowError,如下所示:

    • 无效的FacesServlet映射。例如,映射到*.jsp,而视图本身已经*.jsp。你应该把它映射到其他东西上,例如*.jsf。当您将JSF2与Facelets一起使用时,这不是必需的。视图和映射都可以是*.xhtml

    • 具有无效文件扩展名的JSF视图文件。例如,实际上有一个page.jsf文件,而不是page.jsppage.xhtml,而FacesServlet映射在*.jsf

    我敢打赌你的病是由这两种原因引起的。其他可能的原因通常归结为在支持bean类中拥有错误的代码,但它通常不会涉及容器的内部类,例如跟踪的重复部分中的org.apache.catalina.core.ApplicationDispatcher

  3. # 3 楼答案

    跟踪错误的最佳方法是查看堆栈跟踪,可能存在递归现象,您的跟踪可能会有重复的方法调用序列

  4. # 4 楼答案

    我有这个问题,对我来说,这似乎是一个bug——创建一个空的faces配置。xml使它消失了(这是一个解决办法)。还配置/安装了CDI