Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Javaからのバッチファイルの起動

Javaのプログラムでバッチファイルを起動したいのですが実行時にjava.lang.NoClassDefFoundErrorが出てしまい、こちらの掲示板を色々参考にさせて頂いたのですがどうしてもわからないため投稿させていただきました。コードは下記のような記述です。
try {
    Process proc = 
        Runtime.getRuntime().exec("d:/aaa.bat");
    BufferedReader in =
        new BufferedReader(new InputStreamReader(proc.getErrorStream()));
    String line;
    while ((line = in.readLine()) != null)
        System.err.println(line);
} catch (IOException e) {
    e.printStackTrace();
}

aaa.bat内の記述は
javac sample.java
java sample
cmd
となっており同じ階層内にJavaファイル、クラスファイル、バッチファイルがあります。

バッチファイル自体は単体では動作するのですがEclipseからバッチファイルを実行させるJavaプログラムを実行するとバッチファイル内のsample.javaが読み込めませんというエラーが出てしまいます。

システムの環境変数は
「C:\Program Files\Java\jdk1.5.0_09\bin」
と設定しているのですがどうしてもうまくいきません。

3

回答

4630

閲覧

3件の回答

評価

0

直接実行する場合と、Eclipseから(?)実行する場合でなにかが違うからこそ、結果が違ってくるのです。
NoClassDefFoundErrorは、使おうとしているクラスが読み込めないときにしか出ません。
実行時、クラスはどこから読み込まれますか?
それをしっかりと考えて、それぞれの実行時にどうなっているのかを調査してください。

評価

0

実行時、クラスはどこから読み込まれますかとのアドバイスを元に、Eclipseでパッチファイルを呼び出すクラスと同じ場所にバッチファイル内のクラスを置いてみましたがjava.lang.NoClassDefFoundErrorがでてしまいました。バッチファイル内で呼び出すファイルは2つです。

評価

0

eclipseではプロジェクトの設定と全般の設定が別べつになっています。
まずはプロジェクトを開いて、
プロジェクト→設定 でそのプロジェクトが使用するクラス群がクラスライブラリに設定されているかどうか確認してみてください。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。