2013-11-27 97 views
4

我可以在JSP中調試到內部類嗎?在Intellij中調試JSP中的內部類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(」 測試1 「);」 但它不會中斷。

我該如何調試到InnerClass? 謝謝。

+0

」只有斷點1可以中斷...「 - 這是因爲在這個例子中,你永遠不會調用斷點2的代碼。 –

+0

沒有」method_in_inner_class「的代碼調用」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調試必須執行兩個步驟:設置項目中的Web應用程序的配置,並添加一個Web應用程序服務器配置。

Web應用程序配置:爲了有JSP調試,你必須在你的項目結構「網絡」方面,指向正確的web.xml文件。根據您所使用的Web應用程序結構的類型,可能會由Intellij自動檢測這一方面(無論如何檢查它做了什麼),或者您可能需要手動添加它。請記住在「Java EE構建設置」選項卡中將其設置爲「創建Web分面分解目錄」;如果你不想複製,一個技巧就是啓用它並指向你已經存在的目錄。

(網絡)應用服務器:進入「編輯配置」,有你有添加到配置應用程序服務器,而不是啓動Web服務器像任何其他應用程序。通過這種方式,Intellij將能夠攔截JSP調用。在應用程序服務器列表中,您應該有默認的Tomcat。在執行此操作之前,請務必進行本地Tomcat安裝,並在添加Web應用程序服務器時指出。最後一個技巧是進入「部署」選項卡並選擇「部署源」與您在上一步中配置的相同方面。

相同的配置工作,如果你想使用其他Web應用程序服務器,我有最新的Caucho樹脂的版本進行了測試和調試工作正常(它沒有與以前的IntelliJ和樹脂的組合)。

如果在可用應用程序服務器列表中看不到Tomcat,請檢查通用Intellij設置窗格中的插件:在最新版本中,越來越多的功能變得「可插拔」,甚至非常基本功能可能被禁用;這個插件被稱爲「Tomcat集成」。

最後,JSP文件需要在WEB-INF下才能被調試,這當然不是真的。

來源:JSP debugging in IntelliJ IDEA

而且here可能是一些有趣的配置爲你,如果你還沒有做這一切準備就緒。 「

+0

我的應用服務器是tomcat。 正常斷點可以,但InnerClass中的斷點不起作用。 我簡化了我的測試代碼。 – guopi

+0

'method_in_inner_class'是'method1',對吧?你有交叉的斷點符號嗎?他們是否說由於不屬於任何階級而導致斷點無法訪問? – Dropout

+0

我的錯,我糾正了錯誤。 IDEA說斷點是可以的,但是,在調試時,它可以停在那個位置。 在正常位置的斷點工作。 – guopi