启动Tomcat报错:JasperException: java.lang.ClassNotFoundException
Ubuntu安装后启动tomcat9,打开测试网址127.0.0.1:8080,报错500。
[在 HTTP 协议中,500 Internal Server Error 是表示服务器端错误的响应状态码,意味着所请求的服务器遇到意外的情况并阻止其执行请求].
Type异常报告:
消息 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
描述 服务器遇到一个意外的情况,阻止它完成请求。
Exception
org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:604)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:422)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:198)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader.findClass(java.base@9-internal/URLClassLoader.java:384)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:59)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:193)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
自jdk9开始不再绑定jre,而安装jdk9时却配置了jre相关选项(即“JRE_HOME”),以致Java环境配置出现问题,牵连到tomcat环境配置,因此又重装及配置jdk和tomcat。
下载的是jdk10和tomcat9
讲一下二者的配置。
jdk&tomcat
sudo typora /etc/profile
末尾录入:
export JAVA_HOME=/usr/lib/jdk10 #视具体路径
export CATALINA_HOME=/opt/tomcat9 #视具体路径
export CLASSPATH=.:${JAVA_HOME}/lib:${CATALINA_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
export PATH=.:${CATALINA_HOME}/bin:$PATH
录入完毕,保存退出。
sudo ~/.bashrc #使修改的配置立刻生效
#### tomcat
sudo typora /opt/tomcat9/bin/startup.sh
在exec "$PRGDIR"/"$EXECUTABLE" start "$@"
之前添加:
JAVA_HOME=/usr/lib/jdk10
PATH=${JAVA_HOME}/bin:$PATH
CLASSPATH=.:${JAVA_HOME}/lib
CATALINA_HOME=/opt/tomcat9
保存退出,输入:
sudo ~/.bashrc
在 shutdown.sh 也如此炮制。
最后打开http://localhost:8080/
连接成功。
总结:
无需配置JRE_HOME环境变量,仅配置JAVA_HOME环境变量即可。