2010-09-21 45 views
2

我對java/eclipse開發相當陌生,而且我在調試web應用程序中特定jar的代碼時遇到了一些問題公司使用。在eclipse中調試tomcat時找不到特定jar/class的源代碼

首先,我已經正確安裝了Tomcat,並且可以成功運行webapp(除了我正在嘗試查找的bug之外)。在web目錄的lib目錄中大約有二十個jar文件,當我試圖在其他jar文件中調試文件時,調試器正確捕獲它們的斷點,並且一切都很開心。我在新jar中的代碼中設置的斷點會被跳過,當我沿調試堆棧進一步捕獲斷點時,任何嘗試點擊我感興趣的類都會導致「未找到源」。

我點擊「編輯源查找路徑...」按鈕,單擊包含代碼的項目,它只是將我返回到「找不到源」錯誤。我已經嘗試將查找路徑設置爲項目以及文件系統目錄和工作區項目。每次都有同樣的結果。

我對調試器如何將調試堆棧窗口中的特定函數調用綁定到源代碼有點模糊 - 它僅僅基於課程文件的包名和類名?如果是這樣,我不明白爲什麼它不會工作。

任何想法?

+0

我剛剛注意到的一些事情 - 每次在選擇源查找路徑後單擊「確定」,代碼在「源未找到」消息再次出現之前在窗口中閃爍幾分之一秒。它太快了,我無法100%確定地知道它是我正在查找的文件,但我相當肯定它是。這是否表明什麼?有沒有可能會顯示一些東西的日食錯誤日誌?這只是一個日食錯誤? – 2010-09-21 20:29:21

回答

0

確保您指向正確的目錄。如果類是com.foo.SomeClass,那麼您需要將src目錄設置爲基本目錄,以便Eclipse可以找到$ basedir/com/foo/SomeClass.java。這不一定是項目的根源,它可能是$ project/src,或者甚至是Maven項目的$ project/src/main/java。

+0

當我將源查找路徑添加爲當前位於工作區中的Java項目時,是否應該保證它不在正確的位置?這就是我添加了可調試的其他罐子的方法。 – 2010-09-21 20:22:31

0

原來我錯過了一個項目被重新命名,移動到不同的回購,並有一個幾乎相同的包名......事實上,「近」字。感謝鎖定唯一的迴應!

com.companyname.java.x.y.z.classname != com.companyname.java.y.z.classname 
0

我哈瓦建議要解決以另一種方式你的問題: 當U要調試該DONOT inlude Tomcat的lib或其他的lib綁定到Tomcat這需要處理請求和響應的東西,像Struts2的。

即使你使用spring,也請在主函數中運行程序;

public static void main(String[] args) { 

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
        "classpath*:/applicationContext.*.xml"); // check your applicationCntext formate , maybe applicationContext-*.xml ; 

    context.afterPropertiesSet(); 
    find(context); 
} 
private static void find(ClassPathXmlApplicationContext context) { 

    Map beans = getContext().getBeansOfType(SomeCLass.class); 
SomeCLass bean=beans.values().iterator().next(); 
bean.callFunction(); 

}