web-dev-qa-db-fra.com

org.Apache.jasper.JasperException: Impossible de compiler la classe pour JSP:

Salut, j'essaie de compiler un simple fichier jsp avec Tomcat mais je continuais à avoir ce message d'erreur

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> 

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

}

Autant que je sache, j’ai ce problème parce que mon Tomcat ne peut pas localiser le fichier de classe, J’ai donc placé mes fichiers de classe à 

  • build/classes/pageNumber (où pageNumber est le nom de mon paquet)
  • WEB-INF/classes/pageNumber
  • Tomcat\work\Catalina\localhost_\org\Apache\jsp\pageNumber

mais rien de tout cela a fonctionné . Toute aide?


Edit: Après avoir modifié ma déclaration d'importation de

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

à

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

Cela m'a en fait donné un nouveau type d'erreur:

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

Ceci peut être causé par un conflit de pots. Supprimez le fichier servlet-api.jar de votre répertoire servlet/WEB-INF /.% Tomcat home%/lib possède déjà cette bibliothèque.

10
metalcrash

Le problème est dû au fait que vous devez importer la classe pageNumber.Member dans votre JSP. Assurez-vous d'inclure également d'autres packages et classes comme Java.util.List.

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

Néanmoins, vous avez un problème majeur en utilisant en utilisant des scriptlets dans votre JSP. Reportez-vous à Comment éviter le code Java dans les fichiers JSP? et commencez à vous entraîner EL et JSTL et à vous concentrer davantage sur une solution MVC.

1
Luiggi Mendoza

inclure votre classe de membre à votre jsp:

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

Il n'est pas nécessaire de mettre manuellement des fichiers de classe sur Tomcat. Assurez-vous simplement que votre déclaration de package pour Member est correctement définie en tant que

package pageNumber;

puisque c’est le seul package d’application que vous importez dans votre JSP.

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

Je faisais face au problème, j'ai constaté que cette ancienne bibliothèque ecj est présente dans le répertoire Apache Tomcat 1) supprimez l'ancien fichier jar de la bibliothèque Apache Tomcat 2) nettoie le projet 3) le construit. Il a commencé à fonctionner comme prévu.

0
shubham

Supprimez le fichier servlet du projet Web, comme vous le savez déjà, le serveur d'application/Web déjà.

0
Partha

Votre ligne:

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

Requiert un symbole @ avant % comme ceci:

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