【Java入門】classpathを指定して実行する方法(確認の方法も解説)

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する

こんにちは!フリーランスの長野です。

Javaって使ってますか?Javaはソースコードを書くだけでは実行することはできません。

環境変数を設定したり、コンパイルする必要があります。また、複数のクラスが別々のフォルダに作成されるとクラスパスを設定する必要があります。

この記事では、Javaのクラスパスについて

  • classpath(クラスパス)とは
  • コマンドで設定する方法
  • 環境変数で設定する方法

という基本的な内容から

  • classpath(クラスパス)を確認する方法
  • classpath(クラスパス)を取得する方法
  • jarにクラスパスを設定する方法

など応用的な内容についても解説していきます。

今回はJavaのクラスパスについて、わかりやすく解説します!

なお、Javaの記事については、こちらにまとめています。

classpath(クラスバス)とは?

クラスパスは、Javaの実行環境がクラスファイルやほかのソースファイルを検索するためのパスです。複数のクラスを使用する場合にクラスパスを考慮する必要があります。

mainメソッドが記述されているソースコードと同じフォルダ内に他のソースファイルも保存されていれば、クラスファイルを設定する必要はありません。

他のフォルダにソースファイルやクラスファイル、jarファイルなどを保存している場合はクラスパスを設定する必要があります。クラスパスを設定する方法には2種類あります。

コマンドでコンパイルや実行するときに-classpathオプションを指定する方法と、CLASSPATH環境変数を設定する方法です。

パソコンのOSがWindowsの場合とLinuxの場合でコマンドの記述が異なりますので、それぞれの場合で説明していきます。


【何から学べばいいかわからない…そんな悩みを解決します!】

完全無料ですぐわかる「プログラミング学習プラン診断」

・適性にあわせて学習プランを診断
・完全無料で気軽に診断できる
・学習の悩みもまるっと解決

さっそく診断してみる

コマンドで設定する方法

まずコマンドで設定する方法ですが、その前にコマンドでコンパイルや実行する方法について確認しておきましょう。

コマンドでコンパイルや実行する方法については、こちらで詳しく解説していますので、ぜひこちらを参考にしてください。

【Java入門】コンパイルする方法とエラー発生時の対処法について解説
更新日:2023年3月21日
【Java入門】コマンドで実行する方法(jarファイルの実行も解説)
更新日:2023年3月21日

Windowsの場合

サンプルコードを使って説明します。使うサンプルコードは次の2つのファイルです。

Hello.javaファイルはフォルダHelloの中に保存しています。Main.java:

public class Main {

    public static void main(String[] args) {
        Hello hello = new Hello();
    }

}

Hello/Hello.java:

public class Hello {
    public Hello() {
        System.out.println("Hello World!");
    }
}

実行結果:

サンプルコードのようにjavacコマンドjavaコマンドで-classpathオプションを設定します。-classpathは-cpと省略して記述することもできます。

コマンドを実行するフォルダはmainメソッドが記述されたJavaファイルが保存してあるフォルダです。

複数のパスを「;」(セミコロン)で区切ります。「;」(セミコロン)の前の「.」(ドット)は相対パスで現在のフォルダを指定するときに使います。

Linuxの場合

Linuxの場合は複数のパスの区切りが「:」(コロン)になります。

実行結果:

環境変数で設定する方法

Windowsの場合

この他にも環境変数CLASSPATHをセットすることでクラスパスを設定することが可能です。

例えば次のようにコマンドを入力、実行します。

set CLASSPATH=.;Hello

このあとにjavacコマンド、javaコマンドを-classpathオプションなしで実行します。

また、クラスパスの設定を解除する場合は下記のとおりです。

set CLASSPATH=

Linuxの場合

またLinuxで環境変数CLASSPATHをセットする場合には以下のようにコマンドを入力、実行します。

CLASSPATH=.:Hello; export CLASSPATH

実行結果:

クラスパスを設定した後に「;」(セミコロン)を記述します。

解除する場合は以下のとおりです。

unset CLASSPATH

【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

クラスパスを確認する方法

実行時に指定したクラスパスを確認することができます。

-verboseオプションを使って「-verbose:class」と指定します。

java -verbose:class Main

-verboseオプションは詳細なメッセージを表示するためのオプションです。

オプションについてはこちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】コンパイルする方法とエラー発生時の対処法について解説
更新日:2023年3月21日

クラスパスを取得する方法

クラスパスをJavaプログラムから取得することもできます。

getPropertyメソッドを使います。Hello/Hello.java:

public class Hello {
    public Hello() {
        System.out.println(System.getProperty("java.class.path"));
    }
}

実行結果:

jarにクラスパスを設定する方法

jarファイルとは、Javaのファイルを1つにまとめて圧縮したファイルのことです。

ここまでのサンプルコードで例えばHelloフォルダ内のクラスファイルをjarファイルにまとめて、そのjarファイルとMain.javaクラスを使って処理するということをやってみましょう。

Helloフォルダのファイルを2つに増やします。Hello/Hello1.java:

public class Hello1 {
    public Hello1() {
        System.out.println("Hello World!");
    }
}

Hello/Hello2.java:

public class Hello2 {
    public Hello2() {
        System.out.println("Hello Java!");
    }
}

この2つのファイルをMain.javaファイルから使用します。

Main.java:

public class Main {
    public static void main(String[] args) {
        Hello1 hello1 = new Hello1();
        Hello2 hello2 = new Hello2();
    }
}

まずはこれまでどおり、クラスパスを指定してコンパイルします。

コンパイルできたら、HelloフォルダでHello1.classとHello2.classファイルをHello.jarファイルに圧縮します。

Hello.jarファイルとMain.javaクラスを使ってコンパイルをします。Hello.jarファイルを指定するのに-classpathオプションを使いますが、設定の方法はこれまでと同じです。

ただし注意すべき点が1点あります。実行する際にはjarファイルの指定後に「;」(セミコロン)が必要です。

また、Hello.jarファイルとMain.javaクラスを使ってコンパイルした後にjarファイルにまとめて実行することもできます。

この場合はマニフェスト内の「Class-Path」にjarファイルを指定します。manifest.mf:

Class-Path: Hello.jar
Main-Class: Main

jarコマンドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】コマンドで実行する方法(jarファイルの実行も解説)
更新日:2023年3月21日

まとめ

今回はJavaのクラスパスについて解説してきましたが、いかがでしたか?Javaではプログラミングをする際にたくさんのクラスを作成します。

たくさんのクラスはフォルダごとに整理されていると、後々の修正や改良する際に探す手間が省けます。

クラスをフォルダごとに分けて保存した場合に、classpathを設定してコンパイルや実行を行う必要があります。使いこなすことができるように、この記事を何度も参考にして下さいね!

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close