HTTP Status 500 - javax servlet ServletException java lang

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

详细错误信息


HTTP Status 500 - javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen spacetype Exception reportmessage javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen spacedescription The server encountered an internal error that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    com.auth.filter.AuthorizationFilter.doFilterInternal(AuthorizationFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)    com.auth.filter.AuthenticationFilter.doFilterInternal(AuthenticationFilter.java:115)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    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:107)root causejavax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:916)    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:845)    org.apache.jsp.index_jsp._jspService(index_jsp.java:1102)    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    com.auth.filter.AuthorizationFilter.doFilterInternal(AuthorizationFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)    com.auth.filter.AuthenticationFilter.doFilterInternal(AuthenticationFilter.java:115)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    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:107)root causejava.lang.OutOfMemoryError: PermGen space    java.lang.Class.getDeclaredConstructors0(Native Method)    java.lang.Class.privateGetDeclaredConstructors(Unknown Source)    java.lang.Class.getConstructor0(Unknown Source)    java.lang.Class.newInstance(Unknown Source)    org.apache.jasper.runtime.TagHandlerPool.get(TagHandlerPool.java:120)    org.apache.jsp.index_jsp._jspx_meth_c_005fset_005f0(index_jsp.java:1115)    org.apache.jsp.index_jsp._jspService(index_jsp.java:85)    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    com.auth.filter.AuthorizationFilter.doFilterInternal(AuthorizationFilter.java:77)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)    com.auth.filter.AuthenticationFilter.doFilterInternal(AuthenticationFilter.java:115)    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)note The full stack trace of the root cause is available in the Apache Tomcat/7.0.54 logs.Apache Tomcat/7.0.54
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

PermGen space


PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

解决方法


只需要在Tomcat的bin目录下的“catalina.sh”文件中添加一行就可以解决问题

JAVA_OPTS='-Xms512m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
  
  • 1

具体位置如下图:

这里写图片描述

这里写图片描述

           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
<think>根据用户的问题和提供的引用内容,我们将尝试解决JSP文件导致的HTTP500错误。HTTP状态500错误通常是由服务器内部错误引起的。在JSP项目中,常见的错误来源包括:1.数据库连接问题(如mysql-connector版本不匹配)2.Servlet或JSP相关的配置问题3.编译错误或类找不到错误(如`ClassNotFoundException`)结合引用[3]和[4],我们可以知道:-引用[3]显示了一个具体的错误:`java.lang.ClassNotFoundException:org.apache.jsp.index_jsp`,这表明Tomcat在编译JSP文件时无法找到所需的类。-引用[4]提到了可能的解决方案:①检查mysql-connector的版本号是否和本地mysql版本一致;②检查数据库连接字符串中的驱动类名是否正确(如需要加上`cj`)。因此,我们可以从以下几个方面进行排查:【1】检查JSP文件语法错误:-如果JSP文件本身存在语法错误,可能会导致编译失败。-可以尝试在简单的JSP文件中只写基本代码(如`<%out.println("HelloWorld!");%>`)来测试。【2】检查项目依赖库:-确保`mysql-connector-java.jar`在`WEB-INF/lib`目录下,版本匹配(与本地数据库版本匹配)。-如果是较新的MySQL(如8.0),驱动类名为`com.mysql.cj.jdbc.Driver`,连接字符串可能还需要附加时区设置(如`serverTimezone=UTC`)[^4]。【3】检查Tomcat日志:-通常,错误的具体堆栈信息在Tomcat的日志文件`catalina.out`或`localhost-yyyy-mm-dd.log`中找到。-根据日志信息定位问题源。【4】清理Tomcat工作目录:-删除`work`目录下的所有文件,让Tomcat重新编译JSP。【5】其他可能的解决方案:-确保没有重复的jar包冲突。-检查`web.xml`配置文件是否正确。下面我们提供一个逐步解决的步骤:###步骤1:检查错误日志在Tomcat的安装目录下,找到`logs`文件夹:```cdapache-tomcat-xxx/logs```然后查看最新的`catalina.out`文件或者带有日期的日志文件(如`localhost.2020-08-31.log`),找到导致500错误的具体原因。###步骤2:验证JSP文件例如,创建一个简单的测试JSP文件(如`test.jsp`),内容为:```jsp<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><title>测试</title></head><body><%out.println("HelloWorld!");%></body></html>```访问这个文件,如果这个文件能正常运行,说明问题可能出在原来的JSP文件或者相关的类中。如果不能运行,可能是Tomcat的配置问题。###步骤3:检查数据库连接如果使用了数据库,根据引用[4]:-确认连接字符串是否正确?例如,对于MySQL8.x,应该类似:```javaClass.forName("com.mysql.cj.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC","username","password");```-检查`WEB-INF/lib`目录下是否正确放置了对应版本的`mysql-connector-java-8.0.18.jar`(或其他版本)。###步骤4:清理工作目录并重启Tomcat删除Tomcat工作目录(例如Tomcat的`work/Catalina/localhost/`下对应的项目目录),然后重启Tomcat。###步骤5:检查JDK和Tomcat版本确保使用的Tomcat版本和JDK版本兼容。例如,Tomcat10.x需要JDK11或更高版本。###步骤6:类加载问题-如果出现`ClassNotFoundException`,检查是否缺少某个jar包,或者jar包冲突。-确保自定义Servlet的类文件已经编译并放置到`WEB-INF/classes`目录下(或者打包在jar中放在`WEB-INF/lib`)。§§相关问题§§1.如何在Tomcat中查看具体的错误日志?2.如何解决数据库连接导致的JSP编译错误?3.怎样配置Tomcat才能避免常见的HTTP状态500错误?</think> ### HTTP 500错误修复指南(针对JSP文件) 针对您遇到的JSP文件导致的HTTP状态500内部服务器错误,以下是系统化的解决方案,结合引用内容整理: #### 1. **核心排查方向** 根据引用[3][4],主要可能原因: - JSP编译失败(`ClassNotFoundException`) - 数据库驱动配置错误(版本或驱动类名不匹配) - 第三方库冲突或缺失 - Servlet容器配置异常(Tomcat/WsFilter问题) --- #### 2. **详细修复步骤** **① 检查JSP编译错误** ```java // 示例错误日志片段 [^3] org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp ``` ▸ 检查`webapps`目录下是否存在未编译的`.java`文件 ▸ 清理Tomcat缓存: ```bash rm -rf $TOMCAT_HOME/work/Catalina/ ``` ▸ 确认JSP文件首行指令正确: ```jsp <%@ page contentType="text/html;charset=UTF-8" %> ``` **② 验证数据库连接配置** ```java // 驱动类名检查 [^4] Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 8.x版本 Class.forName("com.mysql.jdbc.Driver"); // MySQL 5.x版本 ``` ▸ 检查`WEB-INF/lib`是否包含匹配的驱动(如`mysql-connector-java-8.0.xx.jar`) ▸ 连接字符串需包含时区参数(对MySQL 8+): ```jdbc jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC ``` **③ 排查类加载冲突** ```java // 典型堆栈错误 [^2] javax.servlet.ServletException: org.apache.tomcat.websocket.server.WsFilter.doFilter ``` ▸ 检查`WEB-INF/lib`是否存在重复jar包(如多个不同版本的servlet-api) ▸ Maven项目执行: ```bash mvn dependency:tree > dependencies.txt ``` **④ Tomcat环境检查** ▸ JDK版本匹配性:Tomcat 9.x需JDK 8+ ▸ 权限设置: ```bash chmod -R 755 $TOMCAT_HOME/webapps/your_project ``` --- #### 3. **验证流程** ```mermaid flowchart TD A[HTTP 500错误] --> B{检查Tomcat日志} B --> C[/catalina.out或localhost_log/] C --> D[定位'ClassNotFoundException'] D --> E[清理work目录重启] E --> F{错误是否解决?} F ----> G[完成] F ----> H[检查jdbc配置] H --> I[验证驱动类名+连接串] I --> J{错误是否解决?} J ----> K[排查jar包冲突] ``` > **注意事项**:日志是核心诊断依据,在Tomcat的`logs`目录中关注`catalina.out`和`localhost-yyyy-mm-dd.log`,错误行通常包含`SEVERE`或`ERROR`标记[^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值