2011-06-01 35 views
7

在討論another question我問,@Aaron Digulla指出以下幾點:如何使用Eclipse檢查調試符號狀態?

如果您安裝了Java SDK,應該在Java安裝的根目錄下的「src.zip」文件。如果缺少,請再次下載Java。 Eclipse應該自動查找源代碼並在打開JTable類型時(或者單擊堆棧跟蹤中的行)顯示給您。

文件src.zip存在於我,但我喜歡@Aaron說仍然無法訪問的JTable源。可能是什麼問題呢?我如何用Eclipse解決這個問題?

雖然「未知來源」擔心我, 。這意味着您的Java 版本沒有調試符號。確保 你a)使用SDK,而 開發,b)你的SDK包含 調試符號,c)不要告訴 命令java去掉調試符號 當它加載類。

a)我使用Eclipse,爲什麼我不應該使用SDK?

b)如何知道我的SDK是否包含調試符號?如果沒有,我該如何添加它們?

c)如何檢查Eclipse是否告訴java去除調試符號?

對不起,這些平凡的問題,但我覺得我不完全瞭解Java開發過程。

+0

你打開過'src.zip'嗎?裏面是什麼? – Pops 2011-06-01 15:08:46

+0

@ Tordamus:開了,是的。有來源。 – Heisenbug 2011-06-01 15:10:29

+0

那麼爲什麼你不能訪問'JTable'的源?請更具體一些。 – Pops 2011-06-01 15:11:15

回答

6

a)Eclipse帶有它自己的Java編譯器,所以如果您使用的是Java運行時環境,那麼除了像jarsigner和可能的JRE源代碼之類的額外功能可能會丟失之外,您不會遇到很多問題。驗證安裝的最好方法是通過你的軟件包管理器;但是,如果通過其他方式安裝,小心的目錄觀察通常可以區分這兩者(請參見下文)。

b)JRE庫通常在不存在調試符號的情況下編譯。 SDK庫通常具有它們。 Java調試通過使用打開調試端口的命令行選項啓動JVM來完成。 SDK通過此端口與JVM通信,請求設置斷點。稍後,如果您決定執行JVM,它還會通過此端口發送步驟/跳轉/倒回調試命令。 「調試」符號實際上是JVM字節碼錶,它引用哪一行源代碼在特定的字節碼指令處開始生效。這允許調試器將運行的字節碼與原始源代碼中的行號相關聯。

c)通過(從菜單)窗口 - >首選項(在選擇器列上)展開「Java」,展開「Java」下的「構建路徑」並選擇「ClassPath變量」。你會看到一些變量,包括一個名爲「JRE_SRC」的變量,它應該指向包含面向公衆的JRE庫源代碼的src.zip文件。同時驗證JRE_LIB是個好主意。

JDK主目錄通常包含一個「bin」子目錄和一個「jre」子目錄,所以如果你只看到一個「bin」子目錄,那麼你就在JRE主目錄中。有了這些知識,希望你能夠找出其他問題。

+0

+1非常感謝您的幫助。現在更清楚了。 JRC_SRC實際上是空的,我會解決這個問題。還有一個問題:我認爲我使用的不是SDK的JRE庫,我該如何改變它? – Heisenbug 2011-06-01 15:40:04

+0

@ 0verbose,首先下載JDK並安裝它。如果您在Linux,Windows或Solaris上,請下載SUN/Oracle JDK。有關其他內容,請參閱您的供應商關於JDK的說明。然後記下JDK的「根」目錄。從配置對話框中的相同「Java」上下文中,選擇「已安裝的JRE」並添加您的JDK根目錄。選中JRE旁邊的框,將其設置爲新項目的默認值。然後返回並將「編譯器」兼容級別設置爲JDK的級別。最後,您可能需要設置現有項目的構建路徑以符合新設置。 – 2011-06-01 15:51:11

1

轉到首選項(窗口 - >首選項)並在搜索字段中輸入「JRE」。

選擇「安裝的JRE」。確保Java運行時使用您期望的Java版本。

如果是,請選擇它,點擊「編輯」。例如,「rt.jar」的圖標應該有一個小文本符號(它應該看起來不同於dnsns.jar)。

如果沒有,請點擊「恢復默認值」。如果這不起作用,請仔細檢查路徑。

這也應該解決你的其他問題。

要檢查類是否包含調試符號,與javap -v反編譯它(見這個問題:Check if Java bytecode contains debug symbols

一些Java實現允許作爲類裝入忽略調試符號。這可能會導致包含符號的類別爲「未知來源」。我確信Sun的Java有這樣的選擇,但我再也找不到它了。

+0

+1:感謝您的幫助。你一直非常有用! – Heisenbug 2011-06-01 15:57:53