it-swarm.com.ru

org.Apache.jasper.JasperException: невозможно скомпилировать класс для JSP:

Привет, я пытаюсь скомпилировать простой файл 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 (на веб-сайте)

<%@ 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 не может найти файл класса, , Поэтому я разместил свои файлы классов в 

  • build/classes/pageNumber (где pageNumber - это имя моего пакета)
  • WEB-INF/классы/PageNumber
  • Tomcat\работа\Catalina\localhost_\орг\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> 
12
Martin Yang

Это может быть вызвано конфликтом банок. Удалите файл servlet-api.jar в каталоге servlet/WEB-INF /, в% Tomcat home%/lib эта библиотека уже есть.

10
metalcrash

Проблема вызвана тем, что вам нужно импортировать класс pageNumber.Member в ваш JSP. Не забудьте также включить другие пакеты и классы, такие как Java.util.List.

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

Тем не менее, у вас есть серьезная проблема с помощью использования скриптлетов в вашем JSP. Обратитесь к Как избежать Java-кода в JSP-файлах? и начать практиковать EL и JSTL и вместо этого сосредоточиться больше на решении MVC.

1
Luiggi Mendoza

включите ваш класс участника в ваш jsp:

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

Нет необходимости вручную помещать файлы классов в Tomcat. Просто убедитесь, что объявление пакета для Member правильно определено как

package pageNumber;

так как это единственный пакет приложения, который вы импортируете в JSP.

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

Я столкнулся с проблемой, я обнаружил, что эта старая библиотека ecj присутствует в каталоге Apache Tomcat 1) удалить старый jar из библиотеки Apache Tomcat 2) очистить проект 3) собрать его. Он начал работать как положено.

0
shubham

Пожалуйста, удалите jar сервлета из веб-проекта, как и любой другой, приложение/веб-сервер уже было.

0
Partha

Эта ваша линия:

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

Требуется символ @ перед %, например так:

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