java.lang.ClassNotFoundException: org.apache.catalina.connector.Response - PullRequest
0 голосов
/ 07 марта 2011

Я использую Eclipse Helios для программирования JSP и POJO, работающих на Tomcat 5.5. Я пытаюсь использовать класс org.apache.catalina.connector.Response следующим образом:

import org.apache.catalina.connector. *; ... Ответ соответственно = (Ответ) r;

где r - это экземпляр HttpServletResponse. Eclipse не выдает предупреждений, и проект компилируется нормально. Однако при переходе на страницу, содержащую этот код, я получаю следующую ошибку:

java.lang.ClassNotFoundException: org.apache.catalina.connector.Response

есть идеи, что идет не так?

Я тоже так пробовал, с тем же результатом.

org.apache.catalina.connector.Response resp = (org.apache.catalina.connector.Response) r;

Спасибо

Ean

Ответы [ 3 ]

1 голос
/ 07 марта 2011

ClassNotFoundException означает, что класс был доступен во время компиляции, но не во время выполнения.Поэтому не имеет значения, как вы импортируете его в исходный код.

Я не проверял, но вполне возможно, что Tomcat не позволяет веб-приложениям получать доступ к его внутренним классам.И причина, по которой я не проверял, состоит в том, что я знаю, что это была бы плохая идея, даже если бы я мог это сделать.Вы должны написать код для API (в данном случае, для javax.servlet. *), А не для реализации.

1 голос
/ 07 марта 2011

Очевидно, что разработчики Tomcat не думают, что это хорошая идея для веб-приложений получить на своих внутренних классах.Вот несколько возможных причин:

  • Это делает ваш код зависимым от Tomcat.
  • Это делает ваш код хрупким перед лицом изменений внутренних деталей;то есть, это зависит от версии Tomcat.
  • Стек Tomcat или другие вещи в контексте вашего веб-приложения могут делать вещи, которые означают, что ваш объект Response является оберткой, а не ожидаемым классом.

Чтобы изменить работу своего кода, вам, вероятно, придется повозиться с файлами JAR Tomcat ... что сделает его еще менее переносимым.Для получения дополнительной информации, которая может помочь вам перерезать себе горло, см. здесь .Обратите внимание, что это специфично для Tomcat 5.5 ... и версия страницы Tomcat 6.0 отличается.


Причина, по которой я хочу превратить его в org.apache.catalina.connector.Ответ должен прочитать то, что находится в заголовках ответа HTTP, прежде чем они будут отправлены клиенту.

Понятно.Ну, возможно, вам следует реализовать собственный Valve.(Это особенность Tomcat.) Или, что еще лучше, посмотрите, подойдет ли вам одна из существующих реализаций Valve .

0 голосов
/ 07 марта 2011

Я не думаю, что вы можете использовать этот класс. Я не уверен, что вы пытаетесь сделать, но используйте HttpServletResponse, и вы должны быть в порядке.

...