2013-11-27 6 views
4

Можно ли отлаживать внутренний класс в JSP?Внутренний класс Debug в JSP в Intellij Idea

мой сервер приложений является tomcat, и я использую Intellij Idea.

нормальная точка останова в jsp в порядке, но точка останова в InnerClass не работает.

в моем тестовом коде Jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ page import="java.io.IOException" %> 
<% 
    new InnerClass().method_in_inner_class(out); 
%> 
<%! 
    class InnerClass { 
     void method_in_inner_class(JspWriter out) throws IOException { 
      //set breakpoint under this line 
      out.print("test1"); 
     } 
    } 
%> 

В вышеописанном файле JSP, я поставил точку останова на "out.print (" test1 ");" , но он не ломается на линии.

Как я могу отлаживать InnerClass? спасибо.

+0

«Только точка останова 1 может сломаться ...» - Это потому, что в этом примере вы никогда не вызываете код для точки останова 2. –

+0

не содержит код для «method_in_inner_class» call «method_in_jsp_class»? – vikingsteve

+0

вы можете скопировать мой тестовый код в среду своей идеи и попробовать отладить. Благодарю. – guopi

ответ

1

Ваш код кажется полным, за исключением того факта, что вторая точка останова не будет работать либо потому, что метод вызывается только от method_in_inner_class. Проблема в том, что отладка JSP немного сложна, потому что вы не отлаживаете Java-класс.

Проверьте, совместим ли ваш сервер с отладкой в ​​соответствии с JSR45.

Если да, то убедитесь, что вы настроили IDE и сервер правильно:

Для отладки JSP в Intellij есть некоторые конфигурации, которые должны быть в порядке. Тот факт, что Intellij всегда позволяет вам добавить точку останова на JSP-линии, не обязательно означает, что вы настроили JSP-отладку. Ниже я ссылаюсь на конфигурацию Intellij 8, w.r.t. в предыдущих версиях вам понадобятся аналогичные операции, так как концепции одинаковы.

Чтобы включить отладку JSP, вы должны выполнить два шага: настроить конфигурацию веб-приложения в своем проекте и добавить конфигурацию сервера веб-приложений.

Конфигурация веб-приложения: для того, чтобы иметь отладку JSP, у вас должен быть «веб-фасет» в вашей структуре проекта, указывая на правильный файл web.xml. В зависимости от вида структуры веб-приложения, которое вы используете, фасет может быть автоматически обнаружен Intellij (все равно, чтобы проверить, что он сделал), или вам, возможно, придется добавить его вручную. Помните, что на вкладке «Параметры сборки Java EE» можно установить как «Создать веб-фасет взорванный каталог»; если вы не хотите дублирования, трюк заключается только в том, чтобы включить его и указать на уже существующий каталог.

(Web) Сервер приложений: перейдите к «edit configurations», там вам нужно добавить в конфигурацию сервер приложений, а не запускать веб-сервер в качестве приложения, как и любое другое. Таким образом Intellij сможет перехватывать JSP-вызовы. В списке серверов приложений вы должны указать по умолчанию Tomcat. Перед тем, как сделать это, убедитесь, что у вас установлена ​​локальная установка Tomcat, и указывайте на это при добавлении сервера веб-приложений. Последний трюк перейдет на вкладку «Развертывание» и выберите в качестве «Источник развертывания» тот же самый грань, который вы настроили на предыдущем шаге.

Такая же конфигурация работает, если вы хотите использовать другой сервер веб-приложений, я протестировал ее с помощью последних выпусков Caucho Resin и отладки (это не было с предыдущими комбинациями Intellij и Resin).

Если вы не видите Tomcat в списке доступных серверов приложений для добавления, проверьте плагины в общей панели настроек Intellij: в последних версиях все больше функциональности стало «подключаемым» и даже очень простым функции могут быть отключены; этот плагин называется «интеграция Tomcat».

И, наконец, совершенно верно, что файлы JSP должны находиться под WEB-INF, которые находятся под отладкой.

Источник: JSP debugging in IntelliJ IDEA

Также here могут быть некоторые интересные настройки для вас, если вы не сделали это все готово.

+0

мой сервер приложений - tomcat. нормальная точка останова в порядке, но точка останова в InnerClass не работает. и я упростил свой тестовый код. – guopi

+0

'method_in_inner_class'' 'метод1', правильно? Получают ли вы символы пересекающихся точек останова? Говорят ли, что точка останова недостижима из-за того, что она не принадлежит ни к одному классу? – Dropout

+0

моя ошибка, я исправил ошибку. IDEA говорит, что точка останова в порядке, но при отладке она может остановиться в этом положении. контрольная точка в нормальном положении работает. – guopi

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