2013-02-15 5 views
0

Я использую Tomcat6.0, Eclipse, SDE 7.0 Express, для веб-разработчиков и jdk1.6неожиданное яшма исключение

В моей странице JSP У меня есть код, который выглядит как followeing

<% 
List<String> options = new ArrayList<String>(); 
DynamicCombo comboBox = new DynamicCombo(); 
options = comboBox.generateComboBox(); 
Collections.sort(options); 
int tempVar = 0; 
while (tempVar < options.size()) { 
out.print("<option value=\""); 
out.print(options.get(tempVar)); 
out.print("\">"); 
out.print(options.get(tempVar)); 
out.print("</option>"); 
tempVar++; 
} 
%> 

DynamicCombo класс внутри упаковки com.ems.billGen.util и я ввожу этот пакет в СПЯ надлежащим образом: -

<%@page import="com.ems.billGen.util.*" %> 

этот класс DynamicCombo есть метод generateComboBox(), что просто создает список строк и возвращает эту строку.

Когда я наводил курсор на класс DynamicCombo в приведенном выше jsp, я понимаю, что он хорошо распознается, потому что я получаю надлежащую документацию для класса. Пожалуйста, смотрите снимок экрана ниже: - on hovering over the class name in the jsp file

Теперь, когда я развернуть вышеуказанную страницу и просмотреть его в Firefox, я получаю следующее яшмы исключения: -

ошибки произошел в строке: 36 в файле Jsp : /implementation.jsp

DynamicCombo cannot be resolved to a type 
33:  <td><select name="product_list"> 
34:   <% 
35:    List<String> options = new ArrayList<String>(); 
36:    DynamicCombo co = new DynamicCombo(); 
37:    options = co.generateComboBox(); 
38:    Collections.sort(options); 
39:    int tempVar = 0; 

Я не могу понять причину и решить эту проблему Любые входы оцениваются.

Соответствующий файл класса также генерируется для DynamicCombo в WEB-INF папку войны файл, как: - class file is actually present in the generated war file

+0

Сообщение об ошибке ясно. Возможно, у вас есть опечатка или ваш класс не находится в этом пакете. Кстати, вы должны реорганизовать свой код, чтобы прекратить использование сценариев. Пожалуйста, прочитайте [Как избежать кода Java в JSP-файлах?] (Http://stackoverflow.com/q/3177733/1065197) –

+0

Спасибо за ответ. Да, понимаете, что сообщение об ошибке ясное. Но причина не в этом. Потому что я уверен, что нет опечаток. Кроме того, как я упоминал выше, я позаботился о том, чтобы класс находился в соответствующем пакете, который я импортирую. Спасибо за предложение. Я просматриваю ссылку, которую вы предоставили. – qre0ct

+0

Возможно, вашего класса нет, вы должны проверить классы в созданном военном файле (не в вашем проекте). –

ответ

3

сообщение об ошибке говорит, что все это, и скриншот подтверждает: такой класс не существует на правильном пути.

Проблема тонкая: вы импортируете com.ems.billGen.util.DynamicCombo, а путь к классу - com/ems/billgen/util/DynamicCombo.class (обратите внимание на столицу G в имени пакета и ее отсутствие в названии пути).

Возможно, это ошибка некоторых инструментов. Ошибка была вызвана тем фактом, что именование не соответствует соглашениям Java (это never to use capital letters in package names).

+0

+1: Это просто доказывает некоторые из больших ошибок, которые вы можете сделать при использовании сценариев в JSP. –

+0

@LuiggiMendoza: hmmm ... спасибо за +1, но в случае этой конкретной ошибки я не вижу, как писать сделает ошибка более заметна, чем <% @ page import = "com.ems.billGen.util.DynamicCombo"%>? Он выглядит практически таким же ... – fdreger

+0

Действительно, вы можете обрабатывать данные из 'DynamicCombo' в сервлете и сохранять отсортированный список в качестве атрибута запроса, а затем использовать' ', чтобы заполнить выпадающий список. Обратите внимание, что при этом нет необходимости использовать '' tag :) –

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