Hi I'm trying to compile a simple jsp file with tomcat but I kept having this error message
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 (at Webcontent)
<%@ 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>
Member.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;
}
}
As far as I can tell, I am having this problem because my tomcat cannot locate the class file, so I have placed my class files at
but none of it worked out. Any help?
Edit: After I change my import declaration from
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
to
<%@ page import="java.util.List, pageNumber.Member" %>
It actually gave me a new type of error:
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>
There's no need to manually put class files on Tomcat. Just make sure your package declaration for Member
is correctly defined as
package pageNumber;
since, that's the only application package you're importing in your JSP.
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
The problem is caused because you need to import the pageNumber.Member
class in your JSP. Make sure to also include another packages and classes like java.util.List
.
<%@ page import="pageNumber.*, java.util.*" %>
Still, you have a major problem by using scriptlets in your JSP. Refer to How to avoid Java Code in JSP-Files? and start practicing EL and JSTL and focusing more on a MVC solution instead.
Please remove the servlet jar from web project,as any how, the application/web server already had.
include your Member Class to your jsp :
<%@ page import="pageNumber.*, java.util.*, java.io.*,yourMemberPackage.Member" %>
This line of yours:
<%@ page import="pageNumber.*, java.util.*, java.io.*" %>
Requires an @
symbol before %
like this:
<%@ page import="pageNumber.*, java.util.*, java.io.*" @%>
I was facing the issue, i found that that older ecj library is present in Apache Tomcat directory 1)remove old jar from Apache Tomcat library 2)clean the project 3)build it. It started working as expected.
This maybe caused by jar conflict. Remove the servlet-api.jar in your servlet/WEB-INF/ directory, %Tomcat home%/lib already have this lib.
Source: Stackoverflow.com