17

您好我正在尝试使用 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> 
4

8 回答 8

12

This maybe caused by jar conflict. Remove the servlet-api.jar in your servlet/WEB-INF/ directory, %Tomcat home%/lib already have this lib.

于 2014-12-16T22:56:49.510 回答
1

问题是因为您需要pageNumber.Member在 JSP 中导入该类。确保还包括其他包和类,例如java.util.List.

<%@ page import="pageNumber.*, java.util.*" %>

尽管如此,在您的 JSP 中使用 scriptlet仍然存在一个主要问题。请参阅如何避免 JSP 文件中的 Java 代码?并开始练习ELJSTL并更多地关注 MVC 解决方案。

于 2013-07-08T02:02:37.010 回答
0

你的这一行:

<%@ page import="pageNumber.*, java.util.*, java.io.*" %>

像这样之前需要一个@符号%

<%@ page import="pageNumber.*, java.util.*, java.io.*" @%>
于 2014-02-02T18:52:39.123 回答
0

将您的 Member Class 包括到您的 jsp 中:

<%@ page import="pageNumber.*, java.util.*, java.io.*,yourMemberPackage.Member" %>
于 2013-07-08T01:42:24.343 回答
0

无需手动将类文件放在 Tomcat 上。只需确保您的包声明Member正确定义为

package pageNumber;

因为,这是您在 JSP 中导入的唯一应用程序包。

<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
于 2013-07-08T01:43:04.893 回答
0

请从 Web 项目中删除 servlet jar,无论如何,应用程序/Web 服务器已经拥有。

于 2015-09-10T14:21:58.523 回答
0

我遇到了这个问题,我发现 Apache Tomcat 目录中存在旧的 ecj 库 1)从 Apache Tomcat 库中删除旧 jar 2)清理项目 3)构建它。它开始按预期工作。

于 2018-09-18T06:52:37.637 回答
0

转到项目 -> 属性 -> 项目方面

检查Java版本,确保它应该与您的 JDK 版本相同。重新启动服务器。

于 2021-12-20T07:16:35.610 回答