2012-03-21 2 views
1

Я изучаю Servlets/jsps и имею несколько тестовых классов. Кажется, что все работает так, как ожидалось, единственная проблема, с которой я столкнулся, - это возможность скомпилировать простой Java-класс. Это класс:Класс не будет компилироваться в Dynamic Web Project в Eclipse

package ilya.model; 

public class DatabaseConnection { 

public String getConnection() 
{ 
    String result; 
    try { 
     Class.forName("org.postgresql.Driver"); 
     System.out.println("found the driver"); 
     result = "Connection established!"; 
    } 
    catch (ClassNotFoundException e) 
    { 
     System.out.println("No driver"); 
     result = "No Connection"; 
    } 

    return result; 
} 

}

СПЯ пытается получить доступ к нему довольно просто, и я не думаю, что это не имеет ничего общего с ним. Если кто-то хочет, чтобы я опубликовал его, дайте мне знать.

Вот Exception я получаю, когда класс инициализируется впервые:

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. ilya.model.DatabaseConnection resolves to a package 

Это компилироваться в обычном проекте Java. Есть идеи?

Обновление Адрес JSP файла. Сейчас он работает. Я попробовал тот же проект на другой машине, и все сработало. Должно быть, что-то не так с Eclipse.

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<%@ page import="ilya.model.BeerSuggestor, ilya.model.DatabaseConnection" %> 
<%! 
int count=0; 
String connect; 

public void jspInit() { 
     ServletConfig sconfig = getServletConfig(); 
     String lname = sconfig.getInitParameter("lastName"); 
     ServletContext context = sconfig.getServletContext(); 
     context.setAttribute("lastName", lname); 
    } 
%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">  
<html> 
<head> 
<%-- DatabaseConnection intialized here --%> 
<% 
DatabaseConnection db = new DatabaseConnection(); 
connect = db.getConnection(); 
%> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
<p>The count is: <%= this.count++ %></p> 
<p>The count is: <%= 500 %></p> 
<p>The count is: <%= config.getInitParameter("lastName") %></p> 

<%-- Value of connect printed here --%> 
<p>The connection result is: <%=" " + connect %> 
</body> 
</html> 
+0

Проблема в вашем JSP, пожалуйста, опубликуйте его. Сервер не может скомпилировать JSP, это не о вашем классе Java («Невозможно скомпилировать класс для JSP»). – home

+0

Согласен; JSP имеет к этому какое-то отношение, возможно, как вы пытаетесь импортировать. Не то, чтобы мы импортировали классы в JSP. –

+0

Я также попытался добавить основной метод и самостоятельно выполнить компиляцию/запуск класса. Это тоже не скомпилировалось. – webhound

ответ

1

Вы не можете иметь простой Java в JSP-файлы, как вы показываете здесь ..

Создать отдельный класс в соответствующей исходной папке внутри Eclipse, для этого.

+0

Это отдельный класс. Это все код в классе. – webhound

+0

Ваша система сборки сломана. Попробуйте экспортировать в WAR и исследовать иерархию WEB-INF/classes. –

+0

Я думаю, что ваше право, система сборки не работает. Я попробовал тот же проект на другом компьютере, и все сработало. – webhound

0

Согласен с предыдущими комментариями. Похоже, вы пытаетесь установить соединение с базой данных непосредственно со своего JSP.

Пожалуйста, проверьте строку в JSP, особенно там, где вы устанавливаете драйвер в jsp.

Вы можете попробовать это из своего jsp.

<% 
Class.forName("org.postgresql.Driver"); 
Connection myConn=DriverManager.getConnection("jdbcostgresql://localhost/db_name?user=db_user&password=db_pwd"); 
%> 
+0

В JSP есть только директива импорта и создание объекта DatabaseConnection в методе jspInit(). – webhound

+0

Метод jspInit() - это сгенерированный метод во время фазы перевода JSP. Все, что вы пишете в jsp, будет переведено в класс java. Вы пытались написать скриптлет для подключения к своей базе данных? – conceptSeeker

+0

Возможно, это был только init(). Я иду из памяти. Я знаю, что он работал нормально до тех пор, пока я не добавил оператор импорта и экземпляр объекта. Я отправлю фактический JSP примерно через 3 часа, когда вернусь домой. – webhound

Смежные вопросы