Tomcat - 无法为JSP编译类

时间:2012-08-25 19:12:59

标签: java jsp tomcat web

我在我的本地开发机器上运行Tomcat 7并且我的Web应用程序运行正常,将其移动到服务器(也运行Tomcat 7),我开始收到错误500,抱怨无法编译某些JSP。我重新启动了服务器,但仍然没有解决它。这是我最近的日志。可能是什么问题?

以下是我在上下文根目录中尝试访问index.jsp时所获得的截图(所有其他页面也是如此)https://docs.google.com/open?id=0B62YJhbvaJNkN3hjTUpEMVp1eUk 他们可能会在大约4次刷新后加载。我也看到了一些permGen的东西。我需要帮助。谢谢!

    Aug 25, 2012 5:05:29 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [LoginChurch] in context with path [/ReligionApp] threw exception [Servlet execution threw an exception] with root cause
java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
    at com.mchange.v2.c3p0.C3P0Registry.reregister(C3P0Registry.java:239)
    at com.mchange.v2.c3p0.impl.DriverManagerDataSourceBase.<init>(DriverManagerDataSourceBase.java:212)
    at com.mchange.v2.c3p0.DriverManagerDataSource.<init>(DriverManagerDataSource.java:60)
    at com.mchange.v2.c3p0.DriverManagerDataSource.<init>(DriverManagerDataSource.java:56)
    at com.mchange.v2.c3p0.DataSources.unpooledDataSource(DataSources.java:152)
    at org.hibernate.connection.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:154)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
    at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
    at com.pacesolutions.religionapp.HibernateUtil.<clinit>(HibernateUtil.java:24)
    at com.pacesolutions.religionapp.services.LoginChurch.processRequest(LoginChurch.java:68)
    at com.pacesolutions.religionapp.services.LoginChurch.doPost(LoginChurch.java:140)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
Aug 25, 2012 5:06:04 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [LoginChurch] in context with path [/ReligionApp] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.pacesolutions.religionapp.HibernateUtil
    at com.pacesolutions.religionapp.services.LoginChurch.processRequest(LoginChurch.java:68)
    at com.pacesolutions.religionapp.services.LoginChurch.doGet(LoginChurch.java:127)
    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:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)
Aug 25, 2012 5:11:50 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [LoginChurch] in context with path [/ReligionApp] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.pacesolutions.religionapp.HibernateUtil
    at com.pacesolutions.religionapp.services.LoginChurch.processRequest(LoginChurch.java:68)
    at com.pacesolutions.religionapp.services.LoginChurch.doPost(LoginChurch.java:140)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)
Aug 25, 2012 7:18:05 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Aug 25, 2012 7:18:05 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Aug 25, 2012 7:18:05 AM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
Aug 25, 2012 7:18:05 AM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()

2 个答案:

答案 0 :(得分:0)

permen空间是VM存储类,方法(等等)的地方。当tomcat动态编译类时,它可以使用太多的具有固定上限(通常为64Mb)的空间。

尝试使用-XX:MaxPermSize选项为tomcat提供更多permgen空间。

请查看此文章以获得解释:http://java.sun.com/docs/hotspot/gc/

答案 1 :(得分:0)

另一个问题是找不到由PermGenSpace OOM错误引起的类。因此在这种情况下无关紧要。 哪个用户正在运行tomcat服务器?是那个root用户还是其他用户?此用户是否有权在提供的堆栈跟踪中写入最后一个根本原因所指定的目录?请参阅FileNotFoundException