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環境變量即可。