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 プログラムの実行

パッケージまたはクラス名内で、非 Latin-1 文字付き 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 (入出力) を実行するネイティブ・メソッドのステップオーバー

デバッガーが System.out または System.err に I/O (入出力) を行うネイティブ・メソッドのステップオーバーを 行う場合は、ネイティブが出力バッファーでフラッシュをしない限り、出力は直ちには現れません。

2.9 定数フィールド参照の検索

検索はバイナリーの中の定数フィールドに参照を見つけられません。Java 言語仕様は、 定数フィールド値がクラス・ファイルのバイトコードにインラインになるようにし、フィールド参照のトレースは行わないように定めているためです。

2.10 ビルド・クラスパスの外の Java コンパイル単位

コンパイル問題を持つコンパイル単位が Java ビルド・クラス・パスの外側に移動されると、Java 問題を永続的に保持したままになります (コンパイル問題のリストは、再度コンパイルされることはないため更新されません)。 *.java ファイルを別のファイル拡張子サフィックスを持つ名前に変更しても、同じ問題が発生します。  

2.11 Linux で IBM 1.3 JVM を実行する VM およびプロセスの終了 

関連するデバッグ・ターゲットが中断スレッドを持っている場合は、起動、デバッグ・ターゲット、または Linux プラットフォームの IBM 1.3 JVM で稼働しているデバッグ・ターゲットに関連するシステム・プロセスの終了は機能しません。 それらのデバッグ・ターゲットをデバッグ UI から除去するには、デバッグ・ビューのポップアップ・メニューから「終了および除去 (Terminate and Remove)」を選択します (またはショートカット "delete" キーを使用します)。 OS の関連システム・プロセスは正しくクリーンアップされないことがあります。 デバッグ・ターゲットが中断スレッドを持っていない場合は、終了は正しく機能します。

2.12 読み取り専用ファイル変更のアクション

「ソース」メニュー上のアクション、(例: 「Getter と Setter の生成」) はファイルが読み取り専用のときは常に使用不可になります。 リポジトリーのプロバイダーが変更時にファイルの自動的なチェックアウトをサポートしていても、現在ではこのことが当てはまります。

2.13 Java コードのテンプレート

${CURSOR} を Java コード・テンプレート (「ウィンドウ (Window)」 > 「設定 (Preferences)」 > 「Java」 > 「テンプレート (Templates)」) のコメントで使うことはできません。 

2.14 インポートの編成とデフォルト・パッケージからのインポート

インポートの編成は、デフォルト・パッケージからのインポートは処理しません。 デフォルト・パッケージからのインポートは、JDK 1.4 ではサポートされなくなりましたので注意してください。 

2.15 フィールドにおける「Javadoc の追加」アクション

「Javadoc の追加」アクションはフィールドでは機能しません。

2.16 Java エディター内の Javadoc 吹き出しヘルプ

Java エディターで ID 上にマウス・カーソルを合わせたときに表示される Javadoc 吹き出しヘルプは、Javadoc コメント内部ではリンクを適切に処理しません。  

2. 17  > の代わりに > が表示された新規 Java クラスの HTML コード

新規の Java クラスを作成すると、次のコメントが生成されます。

この生成済みファイルのテンプレートを変更するには、「Windows」> 「設定 (Preferences)」>「Java」>「コード生成 (Code Generation)」>「コードおよびコメント (Code and Comments)」と進みます。(To change the template for this generated file go to Windows > Preferences > Java > Code Generation > Code and Comments.)

より大 (>) 記号そのものの代わりに、この記号の HTML コードが使用されます。コメントは、正しくは次のとおりです。

この生成済みファイルのテンプレートを変更するには、「Windows」> 「設定 (Preferences)」>「Java」>「コード生成 (Code Generation)」>「コードおよびコメント (Code and Comments)」と進みます。

2.18 プロジェクト名に GB18030 文字を使用したプロジェクトのクラスを実行またはデバッグできない

指定されたコマンド行に GB18030 文字が含まれていると、ほとんどのクラス・ライブラリーは、システム・プロセスの作成 (java.lang.Runtime.exec(...) を介しての) を正しくサポートしません。 この制限は、デバッガーが生成したコマンド行に GB18030 文字が含まれていると、デバッガーがアプリケーションを起動できないことを意味します。

2.19 スタック・オーバーフローをデバッグできない

デバッグ・セッションが java.lang.StackOverflowError 例外 (例外ブレークポイントにより) で中断した場合、デバッガーは、ターゲット JVM からデバッグ情報を検索できないことがあります。 また、デバッガーは、このポイントを過ぎたターゲット JVM と信頼性のある対話をすることができないこともあります。

2.20 評価の制限

デバッガーは、ターゲット JVM でスレッドを使用して評価を実行します (ユーザーが要求した明示的評価と「変数 (Variables)」ビューでの toString() 起動などの暗黙的評価の両方)。 Java Debug Interface (JDI) では、評価が実行されるスレッドをユーザー・イベントで中断する必要があります (つまり、ブレークポイントまたはステップ要求)。 中断アクションによって中断されたスレッドに対しては、評価を実行できません。 また、個々のスレッドだけでなく JVM も中断するようにブレークポイントが構成されている場合は、そのブレークポイントに出会わなかったスレッドは、評価を実行するのに有効な状態になっていません。 評価を実行するのに無効な状態のスレッドで評価を実行しようとすると、「ステップまたはブレークポイントでスレッドを中断してメソッド起動を行う必要がある (Thread must be suspended by step or breakpoint to perform method invocation)」という趣旨のエラー・メッセージが表示されます。

2.21 ビルド・クラス・パスの外部でのブレークポイント

ブレークポイントは、プロジェクトのビルド・クラス・パスの Java エレメントにのみ作成できます。 ブレークポイントに関連する Java エレメントがプロジェクトのビルド・パスから除去された場合、Java デバッガーは、それらのブレークポイントを自動的に削除します。 ただし、ビルド・パスを変更したときに Java デバッグ・プラグインがロードされないと、それらのブレークポイントはワークスペースに残り、ユーザーが「ブレークポイント (Breakpoints)」ビューから、そのブレークポイントに関連するファイルにアクセスしようとするとエラーになることがあります。

2.22 クイック・フィックスおよびデフォルト・パッケージからのインポート

クイック・フィックスは、デフォルト・パッケージからのインポートを処理しません。 デフォルト・パッケージからのインポートは、JDK 1.4 ではサポートされなくなりましたので注意してください。

2.23 Java エレメントを表示するビューのリンク・リソースに対してカット、コピー、貼り付けが機能しない

カット、コピー、および貼り付けアクションは、Package Explorer を含め、Java エレメントを表示するビューに現れるリンク済みファイルとフォルダーには機能しません。 このための対応策として、代わりに「ナビゲーター (Navigator)」ビューからこれらのアクションを使用します。

2.24 JRE システム・ライブラリー・コンテナーからのエレメントに対して Java 作業セットが正しく機能しない

JRE システム・ライブラリー・コンテナーのエレメントだけで構成された作業セットをフィルターとしてパッケージ・ビューに適用すると、空の Package Explorer が作成されます。

2.25 名前に GB18030 文字を使用したパッケージの Javadoc を生成できない

指定されたコマンド行に GB18030 文字が含まれていると、ほとんどのクラス・ライブラリーは、システム・プロセスの作成 (java.lang.Runtime.exec(...) を介しての) を正しくサポートしません。 Javadoc は、JDK と一緒に提供される Javadoc 実行可能ファイルを使用して作成されているので、パッケージまたはクラス名に GB18030 文字が含まれていると、Javadoc の生成は失敗します。

2.26 リンク・エディットが上書きモードで正しく機能しない

リンク・エディットは、単一コンパイル単位内でエレメントを名前変更するために使用され、また、同じテンプレート変数が複数回現れるテンプレートにも使用されます。 リンク・エディットは上書きモードでは正しく機能しません。

2.27 最終行が行コメントである場合、catch ブロック・コード生成テンプレートは改行で終了しなければならない

catch ブロック・コード生成テンプレートの最終行が行コメントであれば、その行は改行で終了していなければなりません。 改行で終了していないと、コメント行が閉じ中括弧で終わり、コンパイル・エラーになります。

2.28 クラス・ファイル・エディターをオープン中の問題

「クラスパス・コンテナーの使用 (Use classpath containers)」設定が、「プラグイン開発 > Java ビルド・パス制御 (Plug-in Development > Java Build Path Control)」設定ページで使用可能になっている場合は、「必須のプラグイン項目 (Required plug-in entries)」コンテナーの JAR ファイルに入っているクラス・ファイルのクラス・ファイル・エディターをオープンすることができません。 この問題に対処する方法の 1 つは、Packages Explorer でこのファイルを展開することです。 こうすれば、エディターの場合と同様にクラス・ファイルの構造が表示されます。 ソース・コード ZIP が JAR で使用可能であれば、もう 1 つのオプションとして、ソースを JAR ファイルに接続することができます。

ソースを「必須プラグイン項目 (Required plug-in entries)」コンテナーの JAR に接続するには、以下のステップを実行します。

  1. Package Explorer で、コンテキスト・メニューからプロジェクトを選択し、「プロジェクト (Project)」>「プロパティー (Properties)」とオープンします。
  2. 「Java ビルド・パス (Java Build Path)」ページを選択します。
  3. 「ライブラリー (Libraries)」へ進みます。
  4. 「必須プラグイン項目」項目を展開します。
  5. JAR の項目を展開します。
  6. 「ソース接続 (Source Attachment)」を選択し、「編集 (Edit)」をクリックします。
  7. 対応するソース ZIP のロケーションを入力します。
  8. 「OK」をクリックして確認します。

メインの README ファイルに戻る

>