webentwicklung-frage-antwort-db.com.de

org.Apache.jasper.JasperException: Klasse für JSP kann nicht kompiliert werden:

Hallo, ich versuche, eine einfache JSP-Datei mit Tomcat zu kompilieren, diese Fehlermeldung wurde jedoch weiterhin angezeigt

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

}

Soweit ich das beurteilen kann, habe ich dieses Problem, weil mein Tomcat die Klassendatei nicht finden kann 

  • build/classes/pageNumber (wobei pageNumber mein Paketname ist)
  • WEB-INF/Klassen/Seitennummer
  • Tomcat\work\Catalina\localhost_\org\Apache\jsp\pageNumber

aber nichts davon hat geklappt .


Bearbeiten: Nachdem ich meine Importerklärung geändert habe

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

zu

<%@ page import="Java.util.List, pageNumber.Member" %>

Es gab mir tatsächlich eine neue Art von Fehler:

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> 
12
Martin Yang

Dies kann durch einen Glaskonflikt verursacht werden. Entfernen Sie die Datei servlet-api.jar in Ihrem Servlet/WEB-INF/-Verzeichnis.% Tomcat home%/lib verfügt bereits über diese Bibliothek.

10
metalcrash

Das Problem wird dadurch verursacht, dass Sie die Klasse pageNumber.Member in Ihre JSP importieren müssen. Stellen Sie sicher, dass Sie auch andere Pakete und Klassen wie Java.util.List einschließen.

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

Dennoch haben Sie ein großes Problem, wenn Sie Scriptlets in Ihrer JSP verwenden. Siehe Wie vermeide ich Java-Code in JSP-Dateien? und fange an zu üben EL und JSTL und konzentriere dich stattdessen mehr auf eine MVC-Lösung.

1
Luiggi Mendoza

fügen Sie Ihrer Member Class Ihre Jsp hinzu:

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

Es ist nicht erforderlich, Klassendateien manuell in Tomcat abzulegen. Stellen Sie einfach sicher, dass Ihre Paketdeklaration für Member korrekt als definiert ist

package pageNumber;

da dies das einzige Anwendungspaket ist, das Sie in Ihre JSP importieren.

<%@ page import="pageNumber.*, Java.util.*, Java.io.*" %>
0
Ravi Thapliyal

Ich war mit dem Problem konfrontiert und fand heraus, dass die ältere ecj-Bibliothek im Apache Tomcat-Verzeichnis vorhanden ist. 1. Entfernen Sie das alte Glas aus der Apache Tomcat-Bibliothek. 2. Reinigen Sie das Projekt. 3. Erstellen Sie es. Es fing an, wie erwartet zu arbeiten.

0
shubham

Bitte entfernen Sie die Servlet-Jar aus dem Webprojekt, wie es die Anwendung/der Webserver bereits hatte.

0
Partha

Diese Zeile von Ihnen:

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

Erfordert ein @-Symbol vor % wie folgt:

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