org.apache.jasper.JasperException:无法为 JSP 编译类:
Posted
技术标签:
【中文标题】org.apache.jasper.JasperException:无法为 JSP 编译类:【英文标题】:org.apache.jasper.JasperException: Unable to compile class for JSP: 【发布时间】:2013-07-05 06:40:58 【问题描述】:您好,我正在尝试使用 tomcat 编译一个简单的 jsp 文件,但我一直收到此错误消息
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 13 in the jsp file: /WebContent/test.jsp
Member cannot be resolved to a type
10: <body>
11: <%
12: //MyBatisDao myDao = new MyBatisDao();
13: List<Member> list; // = myDao.func("test");
14: //out.println("Result list= " + list);
15: %>
16: </body>
test.jsp(在 Web 内容上)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<Member> list;
%>
</body>
</html>
会员.java
package pageNumber;
public class Member
private String id;
private String pw;
private int point;
private int lvl;
public Member()
public Member(String id, String pw, int point, int lvl)
this.id = id;
this.pw = pw;
this.point = point;
this.lvl = lvl;
public String getId() return id;
public void setId(String id) this.id = id;
public String getPw() return pw;
public void setPw(String pw) this.pw = pw;
public int getPoint() return point;
public void setPoint(int point) this.point = point;
public int getLvl() return lvl;
public void setLvl(int lvl) this.lvl = lvl;
public String toString()
return "ID= " + id + ", PW= " + pw + ", POINT= " + point + ", LVL= " + lvl;
据我所知,我遇到了这个问题,因为我的 tomcat 找不到类文件, 所以我把我的类文件放在了
build/classes/pageNumber(其中 pageNumber 是我的包名) WEB-INF/classes/pageNumber tomcat\work\Catalina\localhost_\org\apache\jsp\pageNumber但都没有成功。 有什么帮助吗?
编辑: 在我从
更改我的进口声明之后<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
到
<%@ page import="java.util.List, pageNumber.Member" %>
它实际上给了我一种新类型的错误:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 15 in the generated java file
Only a type can be imported. pageNumber.Member resolves to a package
An error occurred at line: 12 in the jsp file: /WebContent/test.jsp
Member cannot be resolved to a type
9: </head>
10: <body>
11: <%
12: List<Member> list; // = myDao.func("test");
13: %>
14: </body>
15: </html>
【问题讨论】:
您在“Member.java”中有package
声明吗?
如果您使用外部 .jar;保存在WEB-INF/lib中
【参考方案1】:
将您的成员类包含到您的 jsp 中:
<%@ page import="pageNumber.*, java.util.*, java.io.*,yourMemberPackage.Member" %>
【讨论】:
【参考方案2】:无需手动将类文件放到 Tomcat 上。只需确保 Member
的包声明正确定义为
package pageNumber;
因为,这是您在 JSP 中导入的唯一应用程序包。
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
【讨论】:
【参考方案3】:问题是因为你需要在你的JSP 中导入pageNumber.Member
类。确保还包含其他包和类,例如 java.util.List
。
<%@ page import="pageNumber.*, java.util.*" %>
不过,在您的 JSP 中使用 scriptlet 仍然存在一个主要问题。参考 How to avoid Java Code in JSP-Files? 并开始练习 EL 和 JSTL 并更多地关注 MVC 解决方案。
【讨论】:
我不确定你的观点,Luiggi。我说我已经添加了 pageNumber.Member 和 java.util.List 但这仍然给了我错误。 @MartinYang 我试图通过使用pageNumber.Member
类来重现您的确切问题,其中pageNumber
是包名称,然后在主网页文件夹中创建test.jsp
页面(例如WebContent)和一个带有<% List<Member> list; %>. I added <%@ page import="pageNumber.Member, java.util.List" %> before the
`的scriptlet(违背我的喜好),构建项目并部署它,就像一个魅力一样工作。可能还有更多你没有告诉我们的事情。尝试清理您的环境,重建您的项目并进行部署。
您是否为 Eclipse 或 tomcat 设置了“特殊”配置? b/c 无论我做什么,它似乎都没有在我的 comp 中编译。
@MartinYang 不,只是一个带有实际配置的干净 Java Web 项目。可能您还有其他未在问题中显示的内容。我建议您创建一个新的 Web 项目并复制此行为。如果您遇到问题,请编辑您的问题以获得进一步的指导。
我创建了一个新的动态 Web 项目,创建了两个文件 Member.java 和 test.jsp 并将 Member.java 导入到 test.jsp,但我仍然得到完全相同的错误消息。【参考方案4】:
你的这行:
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
在%
之前需要一个@
符号,如下所示:
<%@ page import="pageNumber.*, java.util.*, java.io.*" @%>
【讨论】:
【参考方案5】:这可能是由 jar 冲突引起的。去掉你的servlet/WEB-INF/目录下的servlet-api.jar,%Tomcat home%/lib已经有了这个lib。
【讨论】:
删除 servlet-api.jar 后,Tomcat 停止工作。更换后它工作但发生同样的错误 真的帮帮我:)【参考方案6】:请从 web 项目中删除 servlet jar,无论如何,应用程序/web 服务器已经有。
【讨论】:
【参考方案7】:我遇到了这个问题,我发现 Apache Tomcat 目录中存在旧的 ecj 库 1)从 Apache Tomcat 库中删除旧 jar 2)清理项目 3)构建它。 它开始按预期工作。
【讨论】:
【参考方案8】:转到项目 -> 属性 -> 项目方面。
检查 Java 版本,确保它应该与您的 JDK 版本相同。 重启服务器。
【讨论】:
以上是关于org.apache.jasper.JasperException:无法为 JSP 编译类:的主要内容,如果未能解决你的问题,请参考以下文章