2017年1月28日土曜日

batファイルでJavaプログラムを起動させようとするとエラーがでる現象

先日batファイルでJavaのプログラムを起動させようとしたら
エラー: メイン・クラスMainが見つからなかったかロードできませんでした
とかいうエラーがでてプログラムが起動しませんでした。


このエラーを出した時のbatファイルは以下のようなものでした。
set CLASSPATH=C:\Users\me\workspace\Test\bin\jp\co\cui;
java MainClass
pause
問題は赤字で塗った部分にあります。Class pathにパッケージ名が部分的に含まれてしまっています。Class pathにはパッケージ名を含んではいけないのです。

パッケージ名は2行目のほうにクラス名と一緒に書かなくてはいけないのです。
なので上のファイルを書き直すと以下のようになります。
set CLASSPATH=C:\Users\me\workspace\Test\bin;
java jp.co.cui.MainClass
pause
これでちゃんと動くようになりました。

なお、余談ですが
set CLASSPATH=%~dp0bin;
java jp.co.cui.MainClass
pause
以上のように%~dp0bin;をクラスパスとして指定すると自動的にこのプログラムのあるディレクトリ内のbinファイルを探してくれます。すると、このプログラム+batファイルを配布するときにもユーザー自身で書き換える必要がなくなるということですね。