MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. javaコマンドとは?使い方・オプション・実行例をまとめて解説

javaコマンドとは?使い方・オプション・実行例をまとめて解説

Javaでプログラムを動かすとき、中心になるのがjavaコマンドです。ですが「-cp と CLASSPATH の違いは?」「-jar はいつ使う?」「JVMオプションと引数の順番は?」のように、最初は混乱しやすいポイントが多いでしょう。

そこで本記事では、javaコマンドの基本から、よく使うオプション、実行例、トラブル時の確認観点までを整理します。さらに、公式ドキュメントへのリンクも用意するので、必要に応じて一次情報で確認できる状態まで整えます。

javaコマンドでできること(役割の全体像)

まず、javaコマンドはJVM(Java Virtual Machine)を起動し、指定したクラスのmain(String[] args)を呼び出してアプリケーションを実行します。

しかし、実務で困りがちなのは「どのクラスを起動するか」よりも、どこからクラスを読み込むか(クラスパス)と、JVMへどう設定を渡すか(オプション)です。

そのため、覚えるべき観点は大きく3つです。

  • どのJavaを起動しているか(PATH/java -version)
  • クラスやJARをどこから読み込むか(-cp/CLASSPATH)
  • 実行方法の型(クラス実行/-jar実行)とオプション順序

まず最初に覚える頻出コマンド(-version / -help)

例えば「そもそもJavaが動く状態か」を最短で確認するなら、次の2つが基本です。

java -version
java -help

さらに、複数のJDK/JREが入っているPCでは「想定と違うjavaが動いている」ケースが起きます。したがって、トラブル時はまずjava -versionで実行環境を固定して考えるのが安全です。

JVMオプションとアプリ引数の順番(混乱ポイント)

一方で、オプションは順番が重要です。つまり、JVMに渡すオプションはクラス名(または-jar)の前、アプリケーション引数は後ろに置きます。

# JVMオプション(例:最大ヒープ)を先に指定し、後ろはアプリ引数
java -Xmx512m com.example.Main --port=8080 --mode=dev

例えば-XmxのようなJVMオプションを後ろに置くと、アプリ側の引数として解釈され、意図した動作にならないことがあります。

クラスパス(-cp / -classpath / CLASSPATH)の基本

次に、javaコマンドで最もつまずきやすいのがクラスパスです。さらに言うと、クラスパスの設定方法は複数ありますが、実務では-cp(-classpath)で都度指定するのが扱いやすいです。

例えば、カレントディレクトリにあるクラスを実行するなら次のようにします。

# 例:クラスパスにカレント(.)を含めて実行
java -cp . com.example.Main

しかし、依存JARが増えると指定が長くなり、入力ミスもしやすくなります。そのため、ビルドツール(Maven/Gradle)や実行スクリプトで管理するのが現実的です。

なお、クラスパス未指定の場合は、一般にユーザー・クラス・パスが現在のディレクトリ(.)になる前提で説明されます。とはいえ、環境変数CLASSPATHを設定していると挙動が変わり得るため、切り分け時は -cp を明示するとブレが減ります。

公式ドキュメントも併せて確認しておくと安心です。

WindowsとmacOS/Linuxで区切り文字が違う

さらに重要なのが、クラスパスの区切り文字です。Windowsはセミコロン(;)、macOS/Linuxはコロン(:)を使います。

# Windows例
java -cp ".;lib\app.jar;lib\dep.jar" com.example.Main

# macOS/Linux例
java -cp ".:lib/app.jar:lib/dep.jar" com.example.Main

そのため、チームで手順を共有するときは「OSが違っても再現できるか」を意識して、ビルドツールやスクリプト化を検討すると事故が減ります。

-jarでJARを起動する(配布・実行の定番)

一方で、アプリを配布するときに便利なのが-jarです。つまり、実行対象を「クラス名」ではなく「JARファイル」にして起動します。

java -jar app.jar

例えば、JAR内のMANIFEST.MFMain-Classが定義されていれば、利用者はクラス名を意識せず起動できます。したがって、社内配布や検証用ツールでは -jar 形式が好まれます。

ただし、運用で混乱しがちなのが「-jarとクラスパス」です。さらに踏み込むと、-jar運用では依存関係をどう同梱するか(fat jarや配布方式)が別テーマになります。まずは「実行の型が違う」点だけ押さえておくと良いでしょう。

よくあるエラーと切り分けチェックリスト

しかし、javaコマンド周りのトラブルは、エラーメッセージ自体は単純でも原因が複数に分岐します。そこで、代表的な症状と確認手順をチェックリストにします。

  • 「java: command not found」:PATHが通っているか。java -versionが通るか。
  • 「Could not find or load main class」:-cpの指定が正しいか。区切り文字がOSに合っているか。
  • 「NoClassDefFoundError」:依存JARがクラスパスに入っているか。実行環境とビルド成果物が一致しているか。
  • 「UnsupportedClassVersionError」:実行javaのバージョンが古くないか。java -versionで確認。

そのため、切り分けの最短ルートは「java -version → 最小コマンドで実行 → -cp/-jarを明示 → 依存を追加」の順に、段階的に確認することです。

まとめ:javaコマンドは「実行の再現性」を作る基礎

最後に、javaコマンドで押さえるべき要点を整理します。

  • まずは java -version / -help で環境確認する
  • クラスパスは -cp(-classpath)で明示するとブレが減る
  • 実行の型は「クラス実行」と「-jar実行」に分けて覚える
  • JVMオプションは前、アプリ引数は後ろ(順番が重要)

そして、コマンド実行を押さえると、IDEが違う人とも同じ手順で動作確認でき、レビューや障害調査がスムーズになります。まずは本記事の例をそのまま打てる状態にして、手元で再現しながら理解を固めてみてください。

つまずいたら、現役エンジニアと一緒に解決しよう

この記事で扱った【Java(コマンド)】は、独学だと細部で詰まりやすい分野です。さらに理解を深めたい方は、Zerocodeで実務直結の学習を進めてみませんか。

現役エンジニア1on1

コード添削・詰まり解消を丁寧にサポート。

実務設計まで網羅

Java/SQL/Spring Bootを体系的に習得。

ポートフォリオ支援

現場で刺さる成果物づくりを伴走。

完全オンライン

時間と場所を選ばず学べます。

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る