Java 開發工具 (JDT) - 版本注意事項

1.0 簡介
2.0 已知的問題和限制
    2.1 執行套件或類別名稱中含非 Latin-1 字元的 Java 程式
    2.2 遺漏除錯屬性
    2.3 設定岔斷點
    2.4 使用快速程式碼取代
    2.5 即時運算簿
    2.6 透過速度很慢的連線進行除錯
    2.7 更新視察的值
    2.8 逐行進行執行 I/O 的原生方法
    2.9 搜尋常數欄位參照
    2.10 建置類別路徑外的 Java 編譯單元
   2.11 在 Linux 的 IBM 1.3 JVM 中執行之 VM 和程序的終止作業
    2.12 修改唯讀檔的動作
    2.13 Java 程式碼範本
   2.14 組織匯入和預設套件的匯入項目
   2.15 欄位的「新增 Javadoc」動作
    2.16 Java 編輯器中的 Javadoc 浮動說明
    2.17 新 Java 類別會顯示 HTML 程式碼 >,而不是 >
    2.18 無法在專案名稱含有 GB18030 字元的專案中執行類別或進行類別除錯
    2.19 無法進行堆疊溢位除錯
    2.20 評估限制   
    2.21 建置類別路徑外的岔斷點  
    2.22 快速修正和從預設套件中匯入   
    2.23 在顯示 Java 元素的視圖中,鏈結資源的剪下、複製、貼上無法運作
    2.24 JRE 系統程式庫儲存器的元素之 Java 工作集無法正確運作   
    2.25 無法產生套件名稱有 GB18030 字元的 Javadoc
    2.26 在改寫模式中,鏈結編輯無法正確運作
    2.27 如果最後一行是行備註,catch 區塊程式碼產生範本結尾必須換行
    2.28 開啟類別檔編輯器的問題

1.0 簡介

這個組件包含 Java 開發工具已知問題和限制的資訊。

2.0 已知的問題和限制

2.1 執行套件或類別名稱中含非 Latin-1 字元的 Java 程式

當您執行套件或類別名稱中含非拉丁字元的 Java 程式時,您可能會得到 java.lang.NoClassDefFoundError。要解決這個問題,請將類別檔包裝成 JAR 檔,然後在 JAR 之外執行該程式,而非直接從檔案系統執行程式。

2.2 遺漏除錯屬性

除錯器需要類別檔以除錯屬性進行編譯,才能顯示行號和區域變數。類別庫(例如:rt.jar)在編譯時經常不含完整的除錯屬性, 因此在除錯器中看不見這些類別的區域變數和方法引數。

2.3 設定岔斷點

一般而言,除錯器不允許您將岔斷點放在無法執行的程式碼字行(註解、空白行等等)上。可是,在某些情況下, 除錯器允許岔斷點放在無法執行的程式碼字行上。比方說,除錯器允許岔斷點放在不含起始設定元的變數宣告上。 請注意,已順利安裝在可執行字行上的啟用岔斷點,在執行中(可除錯)的 VM 上顯示時會帶有勾號。顯示時不帶勾號的岔斷點表示未安裝在執行中(可除錯)的 VM 上。

2.4 使用快速程式碼取代

JDK 1.4.x VM 和 IBMR J9 VM 都支援快速程式碼取代。快速程式碼取代僅限用於不會影響類別形式的變更。也就是說,它支援現有方法內的變更,但不支援新增或移除成員。

JDK 1.4.0 VM 上的快速程式碼取代和逐行作業不太穩定。 

2.5 即時運算簿

系統不支援在「即時運算簿」頁面內設定岔斷點。

當程式碼在直接或間接呼叫 System.exit(int) 的即時運算簿中執行時, 會無法完成求值,且會產生 com.sun.jdi.VMDisconnectedException 的堆疊追蹤,並顯示於即時運算簿編輯器內。

如果在「即時運算簿」頁面執行求值時將它終止,會導致即時運算簿編輯器中出現 com.sun.jdi.VMDisconnectedException

2.6 透過速度很慢的連線進行除錯

廣域 Java 除錯喜好設定會指定除錯器逾時值,這是除錯器在對目標 VM 提出要求之後,等待該 VM 回應的時間上限。如果連線速度很慢,這個值可能需要增加。您可以從 Java > 除錯 喜好設定頁面上編輯逾時值。變更逾時值僅會影響後續啟動的 VM,不會影響已在執行的 VM。

2.7 更新視察的值

當您在除錯器中視察已求值之表示式的結果時,很重要的是要注意顯示的結果是當時該表示式求值的結果。比方說,當您視察一個簡單的整數計數器(初始資料類型)時,在「表示式」視圖中顯示的值是該表示式求值當時的值。當執行中的程式中之計數器變更時, 視察的結果並不會改變(因為視圖不會顯示連結到變數的值 - 它會顯示表示式的值,而初始資料類型的值不能改變)。可是,如果表示式會產生物件,當該物件的欄位在執行程式中變更時,它們在視察程式中也會更新(因為連結到物件中欄位的值可以變更)。

2.8 逐步進行執行 I/O 的原生方法

當除錯器逐步進行執行 I/O 到 System.outSystem.err 的原生方法時,輸出可能不會立即出現,除非該原生方法對輸出緩衝區執行清除作業。

2.9 搜尋常數欄位參照

搜尋作業不會尋找二進位檔內常數欄位的參照,原因是「Java 語言規格」規定常數欄位值要列入類別檔的位元組碼中,因而不會提供欄位參照的追蹤資訊。

2.10 建置類別路徑外的 Java 編譯單元

當有編譯問題的編譯單元移至 Java 建置類別路徑外時,它會永遠保留其 Java 問題(因為它不會再重新編譯, 因此其編譯問題清單不會更新)。將 *.java 檔更名為副檔名字尾不同的名稱,也會導致同樣的問題。

2.11 在 Linux 的 IBM 1.3 JVM 中執行之 VM 和程序的終止作業

當相關除錯目標有暫停的執行緒時,無法終止在 Linux 平台 IBM 1.3 JVM 中執行之除錯目標的相關啟動、除錯目標或系統程序。 如果要從除錯 UI 中移除這些除錯目標,請從除錯視圖的蹦現功能表中選取「終止」和「移除」(或使用捷徑 "delete" 鍵)。 OS 中的相關系統程序可能會無法適當清除。 如果除錯目標沒有暫停的執行緒,就能夠正常終止。

2.12 修改唯讀檔的動作

如果檔案是唯讀檔,程式碼功能表中的動作(例如:產生 Getter 和 Setter)一律會停用。即使儲存庫提供者支援修改時自動移出檔案的功能, 目前仍然是這樣。

2.13 Java 程式碼範本

您不能使用 Java 程式碼範本(視窗 > 喜好設定 > Java > 範本)中註解內的 ${CURSOR}

2.14 組織匯入和預設套件的匯入項目

組織匯入並不會處理預設套件的匯入項目。請注意,JDK 1.4 不再支援從預設套件匯入。

2.15 欄位的「新增 Javadoc」動作

新增 Javadoc 動作不適用於欄位。

2.16 Java 編輯器中的 Javadoc 浮動說明

當滑鼠橫越 Java 編輯器中的識別碼時所顯示的 Javadoc 浮動說明,無法適當地處理 Javadoc 備註內的鏈結。

2.17 新 Java 類別會顯示 HTML 程式碼 >,而不是 >

當您建立新的 Java 類別時,產生的備註是:

如果要變更這個產生檔案的範本,請移至「視窗 > 喜好設定 > Java > 產生程式碼 > 程式碼和備註」。

大於 (>) 符號的 HTML 碼取代了符號本身。這個備註應該是:

如果要變更這個產生檔案的範本,請移至「視窗 > 喜好設定 > Java > 產生程式碼 > 程式碼和備註」。

2.18 無法在專案名稱含有 GB18030 字元的專案中執行類別或進行類別除錯

當指定的指令行含有 GB18030 字元時,大部分類別庫都無法適當支援建立系統程序的作業(利用 java.lang.Runtime.exec(...))。 這個限制表示當除錯器產生的指令行含有 GB18030 字元時,除錯器無法啟動應用程式。

2.19 無法進行堆疊溢位除錯

如果除錯階段作業暫停在 java.lang.StackOverflowError 異常狀況(因為異常狀況岔斷點),除錯器可能無法從目標 JVM 中擷取任何除錯資訊。 另外,過了這一個岔斷點之後,除錯器可能無法可靠地與目標 JVM 相互作用。

2.20 評估限制

除錯器會利用目標 JVM 中的執行緒來執行評估(使用者要求的明確評估,以及變數視圖中的 toString() 呼叫之類的隱含評估)。 Java 除錯介面 (JDI) 需要執行評估的執行緒必須由使用者事件(也就是岔斷點或逐步作業要求)來暫停。 在暫停動作所暫停的執行緒上,無法執行評估。 另外,當配置岔斷點來暫停 JVM,而不只是停止個別執行緒時,沒有遇到岔斷點的執行緒也不會在執行評估的有效狀態中。 當試圖在執行緒中進行評估時,如果執行緒不在執行評估的有效狀態中,會出現錯誤訊息,指出「執行緒必須由逐步作業或岔斷點暫停,才能執行方法呼叫」。

2.21 建置類別路徑外的岔斷點

只有在專案建置類別路徑所包含的 Java 元素,才能建置岔斷點。 如果從專案的建置路徑中移除相關的 Java 元素,Java 除錯器會自動刪除岔斷點。 不過,如果在變更建置路徑時,沒有載入 Java 除錯外掛程式,這些岔斷點就會保留在工作區中,當使用者試圖從「岔斷點」視圖移至岔斷點的相關檔案時,可能會發生錯誤。

2.22 快速修正和從預設套件中匯入

快速修正不會處理預設套件的匯入項目。 請注意,JDK 1.4 不再支援從預設套件匯入。

2.23 在顯示 Java 元素的視圖中,鏈結資源的剪下、複製、貼上無法運作

包括套件瀏覽器在內,在顯示 Java 元素的視圖中,鏈結檔案和資料夾的剪下、複製和貼上動作無法運作。 暫行解決方法是改從「導覽器」視圖使用這些動作。

2.24 JRE 系統程式庫儲存器的元素之 Java 工作集無法正確運作

在套件視圖中,將完全由 JRE 系統程式庫元素組成的工作集當作過濾器來套用時,可能會產生空的套件瀏覽器。

2.25 無法產生套件名稱有 GB18030 字元的 Javadoc

當指定的指令行含有 GB18030 字元時,大部分類別庫都無法適當支援建立系統程序的作業(利用 java.lang.Runtime.exec(...))。 由於 Javadoc 是利用 JDK 所提供的 Javadoc 執行檔來建立的,因此,如果套件或類別名稱含有 GB18030 字元,會無法產生 Javadoc。

2.26 在改寫模式中,鏈結編輯無法正確運作

鏈結編輯是用來更名單一編譯單元內的元素以及用在多次出現相同範本變數的範本上。 在改寫模式中,鏈結編輯無法正確運作。

2.27 如果最後一行是行備註,catch 區塊程式碼產生範本結尾必須換行

如果 catch 區塊程式碼產生範本的最後一行是行備註,這一行結尾必須換行。 否則後大括弧會在是備註行上結束,並造成編譯錯誤。

2.28 開啟類別檔編輯器的問題

如果已在開發外掛程式 > 控制 Java 建置路徑喜好設定頁面中啟用「使用類別路徑儲存器」, 您可能無法開啟「必要的外掛程式項目」儲存器中的 JAR 所包含之類別檔的類別檔編輯器。 暫時解決這個問題的一個方式,是在套件瀏覽器中展開類別檔;這時會顯示類別檔的結構,如同在編輯器中一樣。 如果 JAR 有可用的程式碼 zip,則可將程式碼附加在 JAR 檔。

如果要將程式碼附加至「必要的外掛程式項目」儲存器中的 JAR,請遵循下列步驟:

  1. 在套件瀏覽器中選取專案,從快速功能表中開啟專案 > 內容
  2. 選取 Java 建置路徑頁面
  3. 移至程式庫頁面
  4. 展開「必要的外掛程式項目」這個項目
  5. 展開 JAR 的項目
  6. 選取程式碼附件,按一下編輯
  7. 輸入對應程式碼 zip 的位置。
  8. 請按一下確定來確認。

返回主 Readme 檔

>