3

Javaクラスを呼び出すbatファイルを作成しました。これで、Swing で GUI を作成できました。そのスイングには開始ボタンがあり、そのために次のコードを作成したアクションリスナーがあります

public void actionPerformed(java.awt.event.ActionEvent evt)
{
    try 
    {

        File file = new File("F:/myprog/start.bat");

        Desktop.getDesktop().open(file);

    } catch (IOException e)

    {

        e.printStackTrace();

    }

    jButton1ActionPerformed(evt);

}

ボタンをクリックして実行すると、「Error: Could not find or load main class」が表示されます

バッチファイル :

javac *.java
java websphinx.workbench.Workbench
 pause

Bat ファイルをクリックすると、アプリケーションが実行されます。しかし、このbatファイルを呼び出すと、Javaプログラムからエラーが発生します。何が悪かったのか?

4

5 に答える 5

2

intself のバッチ ファイルは実行可能ファイルではなく、通常はインタープリター内で実行されるため、cmd.exe で開始する必要があります。

以下を試してください

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "F:\\myprog\\start.bat");
Process p = pb.start();

これに代わるものは次のとおりです。

Runtime.getRuntime().exec("cmd /c start F:/myprog/start.bat");

ただし、Processbuilder が推奨される代替手段です。バッチ ファイルの実行が完了するのを待つか、同時に実行するようにプログラムに指示できるため、外部プロセスをより詳細に制御できます。

于 2012-11-23T10:01:22.833 に答える
1

これを試して

Runtime.getRuntime().exec("cmd /c start F:/myprog/start.bat");
于 2012-11-23T09:55:54.623 に答える
1

バッチファイルの問題ではないと思いますが、

見つめているError: Could not find or load main class

クラスパスの問題のようです

バッチファイルを改善する必要があるかもしれません

javac *.java
java -cp yourdrive:\path\to\class websphinx.workbench.Workbench
 pause

-cp変数を参照してください。

バッチファイルをそのまま実行すると実行され、プログラムから例外が発生するのは、スコープの変更が原因である可能性があります。Java クラスとバッチ ファイルが同じ場所にない可能性があります。

于 2012-11-23T09:56:22.160 に答える
0

Runtime#execこれには次のメソッドを使用します。

Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", "F:\\myprog\\start.bat" });

実際に実行しているプログラムはcmd.exe/cスイッチ付きの であり、その後に Windows 形式のパスを含むバッチ ファイル名が続くことに注意してください。

于 2012-11-23T09:55:22.207 に答える