Java 9のJShellでコンパイルエラーを回避する方法を解説
JShellとは何か
JShellは、Javaコードを対話形式で実行し、その結果を即座に表示できるツールです。JShellはREPL(Read-Evaluate-Print-Loop:読み込み・評価・出力・ループ)と呼ばれる仕組みを採用しており、コマンドラインから起動して利用します。
Java 9以降で標準搭載されているため、事前にクラスやメソッドを定義したファイルを作成しなくても、手軽にコードの動作確認ができるのが大きな魅力です。
コンパイルエラーが発生する原因
JShellでコンパイルエラーを回避するためには、変数を使用する前に必ず宣言しておく必要があります。JShellは入力されたコードをその場で評価するため、未宣言の変数を参照すると、通常のコンパイラと同様にエラーを報告します。
エラーメッセージでは、「^--^」という記号を使って、問題のある箇所を視覚的にハイライト表示してくれます。
エラーが発生する例
以下のコード例では、int型の変数「div」を宣言しようとしていますが、この時点で変数「num1」と「num2」がまだ宣言されていません。そのため、JShellはコンパイルエラーを出力し、コンパイラがこれらの変数を見つけられなかったことを示しています。
C:\Users\User>jshell | Welcome to JShell -- Version 9.0.4 | For an introduction type: /help intro jshell> int div = num1 / num2 | Error: | cannot find symbol | symbol: variable num1 | int div = num1 / num2; | ^--^ | Error: | cannot find symbol | symbol: variable num2 | int div = num1 / num2; | ^--^
エラーメッセージの「cannot find symbol(シンボルを見つけられません)」という表示と、「^--^」による位置の指摘により、どの変数が未宣言なのかが一目でわかります。
正しく変数を宣言して実行する例
次に、変数を事前に宣言してから使用する正しい手順を見てみましょう。以下のコードでは、まず「num1」と「num2」をそれぞれ宣言し、その後に除算を行っています。
jshell> int num1 = 35 num1 ==> 35 jshell> int num2 = 7 num2 ==> 7 jshell> int div = num1 / num2 div ==> 5
各ステートメントを実行すると、JShellは変数名に続けて「==>」記号を表示し、代入された値を示します。このように、変数を先に宣言しておけば、エラーなく計算結果を得ることができます。
まとめ
JShellでコンパイルエラーを回避するポイントは、次のとおりです。
- 変数は使用する前に必ず宣言する
- エラー発生時は「^--^」の位置表示を参考に、問題箇所を特定する
- REPLの特性上、宣言と実行を順番に行うことで対話的に開発を進められる
これらの基本を押さえておけば、JShellを使ったJavaの学習やプロトタイピングがよりスムーズになります。
-
JavaでJTableをフィルタリングする方法!TableRowSorterとsetRowFilter()の使い方を解説
JTableは、テーブルを柔軟に作成・表示できるSwingのコンポーネントです。テーブルの内容を扱うためのメソッドはTableModelインターフェースで定義されており、実際にはAbstractTableModelクラスを継承して独自のテーブルモデルを実装するのが一般的です。また、JTableではsetCellEditor()メソッドにTableCellEditorインターフェースの実装オブジェクトを渡すことで、セルの編集機能を追加することもできます。 テーブルの表示内容をフィルタリング(絞り込み)するには、TableRowSorterクラスのsetRowFilter()メソッドを使用します。
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー