プログラムを一定時間ごと走らせたい場合、スケジューラーを使います。
シェルスクリプトなどで走らせる方法もありますが、異質なものを組み合わせるのは限界があります。
Java で書けるスケジューラーで、Quartz なる優れた(ちょっと癖のある)ライブラリがあります。
Quartz の使い方はネットでもあがってますが、自前の Job を走らせたいときつまづきやすいのが Job へ値を引き渡したいとき。
ネットであまり記述がなかったので書きます。
このさいコンストラクタを使って値を引き渡す方法はx(だめ)です。
ここは .usingJobData(String, String) を用います。
受け取る側は JobExecutionContext から getJobDataMap() を使って受け取ります。
月曜日, 3月 27, 2017
土曜日, 3月 11, 2017
Java でログを出力:slf4j+logger
Jar 実行形式ファイルではコンソール入出力が使えません。コンソールが使えずともファイルを使う便利な方法があります。ロガーを使う方法です。
そうでなくともログは重要です。デバッグでなくともアプリのトレースが必要な場合は多いです。
Java でログを出力するための便利なライブラリは多種さまざまありますが、そのなかでも slf4j+logger なる方法が便利です。static で Logger を定義できて、出力形式を XML で指定できます。
必要な jar ファイルは以下の通りです[*]。
logback-classic-1.2.1.jar
logback-core-1.2.1.jar
slf4j-api-1.7.24.jar
必要最小限なコードを示します。
出力用のログファイルの設定は logback.xml で。
こいつは奥が深いです。ライブラリのソースの規模を見ると圧倒されます。
ログのレベルは error>warn>info>debug>trace などあります。デフォルトではファイル出力はすべて、標準出力はデバッグレベルまで。レベルごと分けておくと便利です。
そうでなくともログは重要です。デバッグでなくともアプリのトレースが必要な場合は多いです。
Java でログを出力するための便利なライブラリは多種さまざまありますが、そのなかでも slf4j+logger なる方法が便利です。static で Logger を定義できて、出力形式を XML で指定できます。
必要な jar ファイルは以下の通りです[*]。
logback-classic-1.2.1.jar
logback-core-1.2.1.jar
slf4j-api-1.7.24.jar
必要最小限なコードを示します。
出力用のログファイルの設定は logback.xml で。
こいつは奥が深いです。ライブラリのソースの規模を見ると圧倒されます。
ログのレベルは error>warn>info>debug>trace などあります。デフォルトではファイル出力はすべて、標準出力はデバッグレベルまで。レベルごと分けておくと便利です。
Apache Commons CLI: Java でコマンドライン処理
JavaをWindows上で使うのはだからちょっとした障壁をクリアせねばなりません。この種の困難は「世界市場を独占するマイクロソフトへモノを言っているんだ」ぐらいのノリで立ち向かう必要があります。
ですからJavaでコンソールアプリってのはどうしても多少の困難を覚悟せねばなりません。コマンドライン処理など想定されていないわけです。
プロパティファイルで初期化パラメタを設定なる方法がありますが、昔ながらの伝統的スタイルを継承し、クラシックなノリでコマンドライン引数なるものを使うとプロパティなどというものを使わずまるでUnix/Linux/Gnuのコマンドのようなプログラムが書けます。
ここは外部ライブラリを使うのがオススメです。Apache Commons CLI を使う方法を示します。
ですからJavaでコンソールアプリってのはどうしても多少の困難を覚悟せねばなりません。コマンドライン処理など想定されていないわけです。
プロパティファイルで初期化パラメタを設定なる方法がありますが、昔ながらの伝統的スタイルを継承し、クラシックなノリでコマンドライン引数なるものを使うとプロパティなどというものを使わずまるでUnix/Linux/Gnuのコマンドのようなプログラムが書けます。
ここは外部ライブラリを使うのがオススメです。Apache Commons CLI を使う方法を示します。
Java: jar 実行ファイルをつくる
Windows で動く Java の実行ファイルを作るのは手間がかかります。
マイクロソフト社の陰謀ですね。ちょっとした関税外障壁があるわけです。
まず、そのままjavacでコンパイルしてもclassファイルができるだけです。ライブラリを組み込んで動いても、とっても不便なディレクトリ構造は動かせない。
ここは jar ファイルの作り方を工夫すれば動きます。プロジェクトを右クリック、Export からダイアログで Runnable JAR file を選択します。
或いはライブラリを組み込んでマニフェストファイルを設定し Main-Class を設定します。これだってかなりな手間ですが、話はこれで終わらない。
出来上がった jar 実行ファイルがエラーも出さず動いたと思えば動かしているのはjavawでjavaです。つまりコンソールアプリは動かない。出力はまったくなしです。
どうしてもコマンド一つで動く jar 実行ファイルを作りたい場合。copy コマンドでバッチファイルをコピーする裏技があります。
マイクロソフト社の陰謀ですね。ちょっとした関税外障壁があるわけです。
まず、そのままjavacでコンパイルしてもclassファイルができるだけです。ライブラリを組み込んで動いても、とっても不便なディレクトリ構造は動かせない。
ここは jar ファイルの作り方を工夫すれば動きます。プロジェクトを右クリック、Export からダイアログで Runnable JAR file を選択します。
或いはライブラリを組み込んでマニフェストファイルを設定し Main-Class を設定します。これだってかなりな手間ですが、話はこれで終わらない。
出来上がった jar 実行ファイルがエラーも出さず動いたと思えば動かしているのはjavawでjavaです。つまりコンソールアプリは動かない。出力はまったくなしです。
どうしてもコマンド一つで動く jar 実行ファイルを作りたい場合。copy コマンドでバッチファイルをコピーする裏技があります。
登録:
投稿 (Atom)
Qt: 外部プログラムを起動する
Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...
-
コンデンサマイク 極性があります コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。 ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。 ...
-
Flask/SQLAlchemy 使ってる方、jinja で困ってませんか? 本体で Python の関数を書いてもいいんですが、テンプレートでも関数が呼べます。 日付を出したい場合、フォーマットなら strftime() が使えます。 わざわざ文字列を作って渡す必...
-
PowerBuilder では Time, Date, DateTime などという型があります。 デフォルトの表示形式から変更する場合は String() 関数を使います。 String(Date('1/12/2016'),'yyyy-mm-dd...