2013-07-08 102 views
8

您好我想要編譯和Tomcat一個簡單的JSP文件,但我一直有這個錯誤信息org.apache.jasper.JasperException:無法編譯類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> 

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; 
} 

}

至於我可以告訴大家,我有這個問題,因爲我的tomcat找不到類文件, 所以我把我的class文件在

  • 編譯/班/ PAGENUMBER(其中PAGENUMBER是我的包名)
  • WEB-INF /班/ PAGENUMBER
  • 的tomcat \工作\卡塔利娜\ localhost_ \組織\阿帕奇\ 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> 
+0

在「Member.java」中有'package'聲明嗎? – Thilo

+0

如果您使用外部.jar;保存在WEB-INF/lib中 – Gero

回答

0

包括你的會員Class to your jsp:

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

沒有必要手動將類文件放在Tomcat上。只要確保你的包聲明Member被正確地定義爲

package pageNumber; 

,因爲,這是你在你的JSP導入唯一的應用程序包。

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

問題是由於您需要在您的JSP中導入pageNumber.Member類造成的。確保還包括其他軟件包和類如java.util.List

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

不過,你在你的JSP有通過使用小腳本的一個重大問題。請參閱How to avoid Java Code in JSP-Files?並開始練習ELJSTL,而不是專注於MVC解決方案。

+0

我不確定你的觀點,Luiggi。我說我已經添加pageNumber.Member和java.util.List,但仍然給我錯誤。 –

+0

@MartinYang我試着通過一個'pageNumber.Member'類來重現你確切的問題,其中'pageNumber'是包名,然後在主Web頁面文件夾(例如WebContent)中創建一個'test.jsp'頁面和一個scriptlet(與我的口味相反),帶有<%List list; %>。我在''之前添加了<%@ page import =「pageNumber.Member,java.util.List」%>,構建項目並部署它,並像魅力一樣工作。可能還有更多你不告訴我們的東西。嘗試清理你的環境,重建你的項目並部署它。 –

+0

您是否爲Eclipse或tomcat設置了「特殊」配置? b/c不管我做什麼,它似乎都沒有被編入我的合同中。 –

0

這行你的:

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

需要%這樣之前@符號:

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

這也許通過罐子衝突引起的。刪除servlet/WEB-INF /目錄下的servlet-api.jar,%Tomcat home%/ lib已經有了這個lib。

+0

刪除servlet-api.jar後 Tomcat停止工作。替換它後,它工作,但同樣的錯誤發生 –

0

請按照應用程序/ Web服務器已有的方式從Web項目中刪除servlet jar。

相關問題