すでにJavaパッケージ内にあるバッチファイルを実行する必要があります。以下は私のコードです。
public class ScheduleTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
Process exec = Runtime.getRuntime().exec("test.bat");
}
}
test.batはscheduletest
パッケージ内にあり、ScheduleTest
クラスもあります。以下はパッケージ構造です。
どうすればこれを実現できますか?
編集
これは私のバッチファイルの内容です
echo hello;
pause
通常、IDEがソースをコンパイルするときtest.bat
は、同じパッケージ構造を維持しながら、バイナリを含むフォルダーに配置する必要がありますbin/scheduletest/test.bat
。これを前提として、クラスローダーを使用してバッチファイルをロードできます。
ClassLoader loader = ScheduleTest.class.getClassLoader();
URL resource = loader.getResource("scheduletest/test.bat");
Process exec = Runtime.getRuntime().exec(resource.getPath());
プロセスの出力を読み取るには、その入力ストリームを取得する必要があります。
InputStream inputStream = exec.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
ただし、自動ビルド手順(AntやMavenなど)ではクリーニング時にこのファイルが削除されるため、リソースディレクトリを用意しておくことをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加