Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のJShellで外部ライブラリをインポートする方法を解説

JShellとは何か

JShellは、Java言語の学習やJavaコードのプロトタイピングに役立つ対話型ツールです。ユーザーが入力したコマンドをその場で評価し、結果を即座に表示します。このツールはREPL(Read-Evaluate-Print-Loop:読み込み・評価・表示・ループ)という仕組みに基づいて動作しています。

デフォルトでインポートされるパッケージ

JShellセッションを開始すると、便利なJavaパッケージが自動的にインポートされます。/importsコマンドを実行すると、これらのインポート済みパッケージの一覧を確認できます。

jshell> /imports
| import java.io.*
| import java.math.*
| import java.net.*
| import java.nio.file.*
| import java.util.*
| import java.util.concurrent.*
| import java.util.function.*
| import java.util.prefs.*
| import java.util.regex.*
| import java.util.stream.*

外部ライブラリをインポートする手順

JShellでは、以下の手順に従うことで外部ライブラリもインポートできます。

例として、javax.mail.internetパッケージに含まれるInternetAddressオブジェクトを作成したい場合を考えてみましょう。まず、通常の方法でパッケージをインポートしてみます。

jshell> import javax.mail.internet.InternetAddress
| Error:
| package javax.mail.internet does not exist
| import javax.mail.internet.InternetAddress;
| ^---------------------------------^

クラスパスへのJARファイル追加が必要

上記のように、単にクラスをインポートするだけではエラーになります。これは、該当パッケージがクラスパス(classpath)に存在しないためです。外部ライブラリを使用するには、/env --class-pathコマンドを使って、必要なJARファイルやクラスファイルをクラスパスに追加する必要があります。

jshell> /env --class-path \Users\user\mail-1.4.7.jar
| Setting new options and restoring state.

jshell> import javax.mail.internet.InternetAddress

クラスパスを設定した後は、エラーなくインポートが成功します。

InternetAddressオブジェクトの作成

準備が整ったら、次のようにしてInternetAddressオブジェクトを作成できます。

jshell> InternetAddress from = new InternetAddress("a@a")
from ==> a@a

このように、JShellで外部ライブラリを利用する際のポイントは、事前に/env --class-pathコマンドでクラスパスを設定することです。これにより、Mavenなどのビルドツールで取得したJARファイルも簡単に試すことができ、プロトタイピングの幅が大きく広がります。

  1. Java 9のJShellでシステムプロパティを取得する方法【コード例付き】

    JShellは、REPL(Read-Evaluate-Print-Loop)と呼ばれる対話型ツールです。main()メソッドを持つクラスを作成しなくても、簡単なJavaの文を入力するとその場で評価され、結果がすぐに表示されます。起動も簡単で、コマンドラインプロンプトで「jshell」と入力するだけでOKです。 システムプロパティを取得するには、System.getProperty()メソッドとSystem.getProperties()メソッドを使用します。 まずは、Systemクラスのstaticメソッドであるproperty()を使って、特定のシステムプロパティの値をJShell上で表示

  2. Java 9でJavaFXを使ってJShellをプログラムから実装する方法

    JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として