【问题标题】:What causes this jsp Error 500?什么导致这个jsp错误500?
【发布时间】:2023-04-09 05:46:01
【问题描述】:

我写了一个非常简单的jsp问题,它从一个类中获取一个数字并显示它,但是我遇到了错误500。

我使用 eclipse 和 tomcat 5.5:

 <%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<h1>number of shown :</h1>
<body>
<%
try{
out.print(Model.getCount());
}
catch(IOException k)
{
    out.println("Eror");
}
%>
</body>
</html>

我的型号 class=>

public class Model {
    static int number=0;
    public static int getCount()
    {
        number++;
        return number;
    }
}

我的任何模型类都是默认包。

我看到的错误:

输入异常报告

消息

描述服务器遇到一个 阻止它的内部错误() 完成此请求。

异常

org.apache.jasper.JasperException: 无法为 JSP 编译类:

第 14 行出现错误 jsp 文件:/show.jsp 模型不能 已解决 11: 12:

堆栈跟踪: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:328) org.apache.jasper.compiler.Compiler.compile(Compiler.java:307) org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

note 根的完整堆栈跟踪 原因在 Apache 中可用 Tomcat/5.5.33 日志。


Apache Tomcat

【问题讨论】:

    标签: jsp tomcat servlets


    【解决方案1】:

    永远不要将任何类放在默认包中。默认包是不能被包内的类访问的,而且由于JSP被Tomcat转化为servlet类,而这个类在包中,所以无法访问你的Model类。

    一旦它在一个定义明确的包中,你就必须导入它,正如 mschonaker 在他的回答中显示的那样:

    <%@page import="somepackage.Model"%>
    

    【讨论】:

    • -1 下次评论我的答案,以便我改进它。我的回答没有错。谢谢。
    • 在您阅读 cmets 之前,评论可能会让 OP 处于黑暗中,并且您的回答不正确:它建议导入该类,而 OP 在他的问题中明确表示 Model 类在默认包中.所以,下一次,在回答之前仔细阅读问题。你应该很高兴得到 3 票赞成一个无益的答案,而我有 1 票反对一个有帮助的答案。
    • 老实说,“jb nizet”的第一段对我有帮助,包括来自 mschonaker 的第二段,因为它有助于我无法识别 jsp 关于默认包。
    • 无论如何,得到一个接受的答案为负分是很尴尬的。把它归零。
    【解决方案2】:

    找不到类Model

    尝试类似:

              <%@page import="somepackage.Model"%>
    

    【讨论】: