Java

【Java】クラスパスを通してコンパイルする方法

こんにちは、ともです。

Javaのコンパイルをeclipseに頼っている私ですが、最近仕事で黒い画面からコンパイル→実行をやることになりました勉強しました。

この記事では、

  1. ログを出力するJavaソースを書く(logback)
  2. ログ出力ライブライが動くように、クラスパスを通す
  3. 実行する

という流れを記事にして残したいと思います。

ログ出力するソースを書く

logbackでログ出力するためのコードを下のように書いてみました。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyLog {
 // メイン文でログを出力させる
  public static void main(String[] args) {
      // Logger取得
     Logger logger = LoggerFactory.getLogger("testlogger");
     logger.info("Did it again!");
  }
}

slf4jというログのファサードとなるライブラリを利用しています。

このファイルをコンパイル・実行するには、slf4jが利用できるようにクラスパスを通す必要があります。

ライブラリのダウンロード

.
├── MyLog.java
└── lib
    ├── slf4j-api-1.7.20.jar
    └── slf4j-simple-1.7.20.jar

上記のようにMyLogクラスで利用しているライブラリをダウンロードし、libフォルダに格納しました。

ライブラリはこちらこちらからダウンロード下さい。

では次に、MyLogクラスをjarをクラスパスを通しコンパイル・実行してみましょう。

コンパイル・実行

#コンパイル
javac -classpath .:lib/slf4j-api-1.7.20.jar:lib/slf4j-simple-1.7.20.jar MyLog.java

# 実行
java -classpath .:lib/slf4j-api-1.7.20.jar:lib/slf4j-simple-1.7.20.jar MyLog

上記のようにコンパイルと実行をしましょう。

javacコマンドは、.java→.classを作成するものです。

javaコマンドは、.classを実行するコマンドです。

オプションとして、「-classpath」を指定していることがわかりますね。ここで必要なjarファイルを伝えています。今回通したのは次の3つです。

  1. カレントディレクトリ
  2. slf4j-api-1.7.20.jar
  3. slf4j-simple-1.7.20.jar

通すものを「:」区切りで指定します。カレントディレクトリは今回通す必要はないんですが、備忘録の目的で加えました。

「.(ドット)」はカレントディレクトリを表します。

「.:lib/hoge.jar」とすると

  1. カレントディレクトリ
  2. lib/hoge.jar

になる訳ですね。

実行結果

次のような実行結果が出力された場合、成功です!

[main] INFO testlogger - Did it again!

無事に出力できたかと思います。お疲れ様です。