こんにちは、ともです。
Javaのコンパイルをeclipseに頼っている私ですが、最近仕事で黒い画面からコンパイル→実行をやることになりました勉強しました。
この記事では、
- ログを出力するJavaソースを書く(logback)
- ログ出力ライブライが動くように、クラスパスを通す
- 実行する
という流れを記事にして残したいと思います。
ログ出力するソースを書く
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つです。
- カレントディレクトリ
slf4j-api-1.7.20.jar
slf4j-simple-1.7.20.jar
通すものを「:」区切りで指定します。カレントディレクトリは今回通す必要はないんですが、備忘録の目的で加えました。
「.(ドット)」はカレントディレクトリを表します。
「.:lib/hoge.jar」とすると
- カレントディレクトリ
- lib/hoge.jar
になる訳ですね。
実行結果
次のような実行結果が出力された場合、成功です!
[main] INFO testlogger - Did it again!
無事に出力できたかと思います。お疲れ様です。