こんにちは、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(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;
}
}
私の知る限り、Tomcatがクラスファイルを見つけることができないため、この問題が発生しています。そのため、クラスファイルを
しかし、どれもうまくいきませんでした。助けがありますか?
編集:インポート宣言を変更した後
<%@ 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>
これは、jarの競合が原因である可能性があります。 servlet/WEB-INF /ディレクトリのservlet-api.jarを削除します。%Tomcat home%/ libにはすでにこのライブラリがあります。
この問題は、JSPでpageNumber.Member
クラスをインポートする必要があるために発生します。 Java.util.List
などの別のパッケージとクラスも含めるようにしてください。
<%@ page import="pageNumber.*, Java.util.*" %>
それでも、JSPでスクリプトレットを使用することで大きな問題が発生します。 回避方法Java JSP-Filesのコード? を参照し、練習を開始します [〜#〜] el [〜#〜] および [〜#〜] jstl [〜#〜] そして、代わりにMVCソリューションに焦点を合わせます。
jspにメンバークラスを含めます。
<%@ page import="pageNumber.*, Java.util.*, Java.io.*,yourMemberPackage.Member" %>
Tomcatにクラスファイルを手動で配置する必要はありません。 Member
のパッケージ宣言が次のように正しく定義されていることを確認してください。
package pageNumber;
なぜなら、それがJSPにインポートしている唯一のアプリケーションパッケージだからです。
<%@ page import="pageNumber.*, Java.util.*, Java.io.*" %>
私は問題に直面していました、私は古いecjライブラリがApache Tomcatディレクトリに存在することを発見しました1)Apache Tomcatライブラリから古いjarを削除します2)プロジェクトをきれいにします3)ビルドします。期待どおりに動作し始めました。
いずれの方法として、アプリケーション/ Webサーバはすでに持っていた、Webプロジェクトからサーブレットjarファイルを削除してください。
あなたのこの行:
<%@ page import="pageNumber.*, Java.util.*, Java.io.*" %>
このような@
前%
シンボルが必要です。
<%@ page import="pageNumber.*, Java.util.*, Java.io.*" @%>