土曜日, 3月 11, 2017

Java: jar 実行ファイルをつくる

Windows で動く Java の実行ファイルを作るのは手間がかかります。

マイクロソフト社の陰謀ですね。ちょっとした関税外障壁があるわけです。

まず、そのままjavacでコンパイルしてもclassファイルができるだけです。ライブラリを組み込んで動いても、とっても不便なディレクトリ構造は動かせない。

ここは jar ファイルの作り方を工夫すれば動きます。プロジェクトを右クリック、Export からダイアログで Runnable JAR file を選択します。



或いはライブラリを組み込んでマニフェストファイルを設定し Main-Class を設定します。これだってかなりな手間ですが、話はこれで終わらない。

<target name="jar" depends="build">
<jar jarfile="SCDF_Generator.jar" basedir="bin">
<manifest>
<attribute name="Main-Class" value="DirList" />
</manifest>
<zipgroupfileset dir="lib" includes="*.jar" />
</jar>
</target>
view raw build.xml hosted with ❤ by GitHub

出来上がった jar 実行ファイルがエラーも出さず動いたと思えば動かしているのはjavawでjavaです。つまりコンソールアプリは動かない。出力はまったくなしです。

どうしてもコマンド一つで動く jar 実行ファイルを作りたい場合。copy コマンドでバッチファイルをコピーする裏技があります。

@echo off
java -jar "%~f0" %*
exit /b %ERRORLEVEL%
view raw src.bat hosted with ❤ by GitHub
copy /b src.jar+DirList.ar DirList.bat
view raw copy hosted with ❤ by GitHub

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...