17

こんにちは、単純な jsp ファイルを tomcat でコンパイルしようとしていますが、このエラー メッセージが表示され続けました。

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> 

メンバー.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/クラス/ページ番号
  • 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

これは、jar の競合が原因である可能性があります。servlet/WEB-INF/ ディレクトリにある servlet-api.jar を削除します。%Tomcat home%/lib には既にこの lib があります。

于 2014-12-16T22:56:49.510 に答える
1

pageNumber.Memberこの問題は、JSP にクラスをインポートする必要があるために発生します。のような別のパッケージとクラスも必ず含めてくださいjava.util.List

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

それでも、 JSP でスクリプトレットを使用することには大きな問題があります。JSPファイルでJavaコードを回避する方法を参照してください。ELJSTLの練習を開始し、代わりに MVC ソリューションに重点を置きます。

于 2013-07-08T02:02:37.010 に答える
0

アプリケーション/Web サーバーが既に持っていた方法と同様に、Web プロジェクトからサーブレット jar を削除してください。

于 2015-09-10T14:21:58.523 に答える
0

メンバー クラスを 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

私はこの問題に直面していました.古いecjライブラリがApache Tomcatディレクトリに存在することがわかりました.1)Apache Tomcatライブラリから古いjarを削除します.2)プロジェクトをクリーンアップします.3)ビルドします. 期待どおりに動作するようになりました。

于 2018-09-18T06:52:37.637 に答える
0

Project -> Properties -> Project Facetsに移動します。

Javaのバージョンを確認し、JDK のバージョンと同じであることを確認してください。サーバーを再起動します。

于 2021-12-20T07:16:35.610 に答える