在 Ubuntu 上运行 JSP 报错,通常不是“JSP 本身的问题”,而是运行环境或配置问题。下面我按最常见原因给你梳理一下,你可以对照排查。
JSP 必须靠 Servlet 容器运行,不能直接用 java 或 javac 跑。
✅ 正确环境:
检查:
which java
java -version
Tomcat 是否启动:
ps aux | grep tomcat
或:
systemctl status tomcat
JSP 必须放在 web 应用目录下:
Tomcat/webapps/yourProject/
├── index.jsp
├── WEB-INF/
❌ 错误示例:
/home/xxx/index.jspfile:///...jsp✅ 正确访问方式:
http://localhost:8080/yourProject/index.jsp
JSP 编译需要 JDK
检查:
javac -version
如果没有 javac:
sudo apt install openjdk-11-jdk
Ubuntu 下 Tomcat 通常用 tomcat 用户运行。
常见错误:
修复:
sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/yourProject
sudo chmod -R 755 /var/lib/tomcat9/webapps/yourProject
例如:
<%
int a = 1/0;
%>
会报:
org.apache.jasper.JasperException
java.lang.ArithmeticException
✅ 看 Tomcat 日志:
tail -f /var/log/tomcat9/catalina.out
原因:
✅ 确认:
http://localhost:8080/
原因:
✅ 看日志:
/var/log/tomcat9/catalina.out
说明 JSP 语法有问题
例如:
<%= request.getParameter("id") %> <!-- 少分号没问题 -->
但:
<% int x = %> ❌
webapps/test/index.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<h1>Hello JSP</h1>
<%= new java.util.Date() %>
</body>
</html>
访问:
http://localhost:8080/test/index.jsp
如果你愿意,把下面信息发我:
我可以直接帮你 精准定位是哪一步出错。