• ベストアンサー

JAVAで外部ファイルの実行

JAVAで外部ファイルを実行したいのですが、 myjbutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ Runtime myruntime=Runtime.getRuntime(); try{Process myprocess=myruntime.exec("cmd.exe");}catch(IOException e){}; }}); ボタンを押して、実行させたいのですが、これが 全く起動しません。notepad.exeなども試しました が無理でした。 アドバイスがあれば、教えてください。お願いします。

noname#10667
noname#10667
  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ratsbane
  • ベストアンサー率40% (4/10)
回答No.1

exec("C:\\WINNT\\SYSTEM32\\notepad.exe"); とかでもだめでしょうか。win2000ですけど。

noname#10667
質問者

お礼

ありがとうございます。 notepad実行できました。 環境変数は効かないということですね。

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

単に目に見えないだけだと思います。 myprocessに対してipconfigなどの入力を与えてあげるとそれに対応した出力が得られます。 JavaDocにも以下のように書いてありますので、プロセスが起動されても目に見えません。 >自身の端末またはコンソールを持ちません。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Process.html
noname#10667
質問者

お礼

回答ありがとうございます。 cmd.exeは確かに画面は開かないけれど、 コマンドは、なんとか実行できそうです。 コマンドラインから呼び出されたから同じプログラムで 別のコマンドラインを呼び出し、起動する ことはできないということですね(なんとなく 理解できそうです)。

関連するQ&A

  • 外部コマンドを実行する方法

    sdk 1.4.2_08 OS WindowsXp try{ Process process = Runtime.getRuntime().exec(...); }catch(IOException e){} を使用して,コマンドを実行しようとしています.しかし,IOExceptionとなってしまいます. exec(...) に記述してある内容をコピーして,コマンドラインから実行できることは確認しましたし,パスも大丈夫でした. また空白が認識されない場合があることから, String cmd[] = {"コマンド","引数1","引数2"}; Process process = Runtime.getRuntime().exec(cmd); と行ってもダメでした. また,ためしにこのコンパイル済みのclassファイルをLinuxで動作させたところ,正常の動作できることがが確認できました.(windowsとLinuxに同じ名前のコマンドがあるのです.また,Linuxは fedora core4 です.) Windows上のコマンドに問題があるようなのですが,何か原因となる要因が,他にもありそうでしたらアドバイスお願いいたします.

    • ベストアンサー
    • Java
  • javaからバッチファイル実行

    お世話になります。 javaプログラムからバッチファイルを呼び出して実行するようにしたいのですが、上手くいきません。 サイトを参考に以下のように書いてみましたが、 バッチファイルの一行目のみ実行している?ようで、二行目以降の処理をしていないようです。 バッチファイル単体での実行は正常に動作しています。 お気づきの点がありましたら教えて頂けないでしょうか。 try { String[] cmd = {"バッチファイルのパス"}; Process p = Runtime.getRuntime().exec(cmd); while(true){ try{ p.exitValue(); }catch(IllegalThreadStateException e){ continue; } break; } } catch (IOException e) { e.printStackTrace(); }

    • ベストアンサー
    • Java
  • ネットワーク上の他のパソコン内のjarを実行したい。

    ネットワーク上の他のパソコン内のjarを実行したい。 実行して他のパソコンの中で動かしたいですが、反応がありませんでした。 他のパソコン側のセキュリティ設定や、jarファイルへの設定が必要なのでしょうか。 また、他の方法で同じことはできませんでしょうか。 ご存知の方がおられましたら教えてください。 よろしくお願いいたします。 以下は、試したソースです。 import java.io.IOException; public class exec { public static void main(String[] args) { // ネットワーク上のjarを実行したい。 try { //Runtime.getRuntime().exec("cmd /c start //myPC/log/test.jar");//反応なし //Runtime.getRuntime().exec("cmd /c start //myPC/log/test.txt");//反応なし Runtime.getRuntime().exec("cmd /c start C:/log/test.jar");//実行できる Runtime.getRuntime().exec("cmd /c start C:/log/test.txt");//実行できる } catch (IOException e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • 既定のテキストエディタで開く, lnkファイルを実行する

    (1) Runtime.getRuntime().exec("C:/test.txt"); (2) Runtime.getRuntime().exec("C:/Documents and Settings/User/デスクトップ/メモ帳.lnk"); 当然ながら上記のコードは、IOException(Cannot run program)を送出しますが、 何をしたいか、その気持ちは伝わるのではないかと思います。 (1)では、OS既定のテキストエディタを使って、testファイルを開きたい。 (2)では、リンク先のnotepad.exeアプリを実行した。 ということなのですが、これを実現する方法をご教授ください。 実行環境は、WindowsXPを想定していますが、Javaですので可能ならば H/W,OSに依存しない方法があれば最善です。

    • ベストアンサー
    • Java
  • javaでhtmlファイルを開く方法

    通常は、下記のような記述をすれば、html.htmlファイルを開けると思うのですが開けせん。どうすれば、開くことができますか? また、ディスクトップで実行しているのですが、Javaファイルと同じディレクトリ(デスクトップ)にあるhtml.htmlファイルを開くことはできないのしょうか? 相対パスで記述するとエラーになります。 初歩的な質問かもしれませんが、ご教示、宜しくお願い致します。 String[] cmd = {"C:\\html.html"}; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd);

    • ベストアンサー
    • Java
  • Javaからのバッチ起動に関して

    現在ファイル整理用のプログラムを作っています。 その中でJavaのRuntimeクラスにおけるexecメソッドを使い move *ファイル名* 移動後ディレクトリ という内容のバッチファイルにテキストフィールドから取得したファイル名を渡し カットアンドペーストを行おうと思ったのですが、 この処理だとマッチする条件のファイル量が多いときに途中で何故か止まります。 バッチファイルの内容をコマンドプロンプトから実行するとちゃんと全てのファイル操作が終わるまで動くのですが、原因は何なのでしょうか? 一応、下にその処理をしている部分のコードを書いておきます。 private class ButtonAction implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("ファイル移動")) { String str=text.getText(); if(str.equals(""))System.out.println("入力してください"); else { Runtime rt=Runtime.getRuntime(); JFileChooser fc=new JFileChooser("D:/Video"); fc.addActionListener(new FileAction()); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.showOpenDialog(null); if(isok){ try{ rt.exec("C:\\Users\\yuki\\Desktop\\move.bat "+str+" "+path); }catch(Exception err) { err.printStackTrace(); } } } バッチファイルの中身 C: cd "C:\録画" move *%1* %2

    • ベストアンサー
    • Java
  • Javaで外部ファイルの実行

    Javaで外部ファイルの形態素解析ツールのjumanを実行させようとしてるのですが上手くいきません。 ソースは以下のようにしています。 public class CommandExec { /** * 外部コマンドを実行します。 * またリタンーン値で、標準出力、エラー出力 、リターンコードを取得します。 * 例: * execCommand("notepad.exe"); * * @see execCommand(String[] cmds) * ※実行するコマンドに引数(パラメータ)がある場合は、 * 以下を使用してください。 * @param cmd 実行するコマンド * @return コマンド実行結果情報を保持するString配列 * 配列[0] ⇒ 標準出力 * 配列[1] ⇒ エラー出力 * 配列[2] ⇒ リターンコード * @throws IOException 入出力エラーが発生した場合 */ String b; public static String[] execCommand(String cmd) throws IOException, InterruptedException { return execCommand(new String[] { cmd }); } /** * 外部コマンドを引数(パラメータ)を指定して実行します。 * またリタンーン値で、標準出力、エラー出力 、リターンコードを取得します。 * 例: * execCommand(new String[]{"notepad.exe","C:\test.txt"}); * * Process.waitFor()を実行していますので、外部コマンドの実行が * 終了するまでこのメソッドは待機します。 * * @see execCommand(String cmd) * ※実行するコマンドに引数がない場合は簡易的にこちらを * 使用してください。 * @param cmds 実行するコマンドと引数を含む配列 * @return コマンド実行結果情報を保持するString配列 * 配列[0] ⇒ 標準出力 * 配列[1] ⇒ エラー出力 * 配列[2] ⇒ リターンコード * @throws IOException 入出力エラーが発生した場合 */ public static String[] execCommand(String[] cmds) throws IOException, InterruptedException { String[] returns = new String[3]; String LINE_SEPA = System.getProperty("line.separator"); Runtime r = Runtime.getRuntime(); Process p = r.exec(cmds); InputStream in = null; BufferedReader br = null; try { in = p.getInputStream(); StringBuffer out = new StringBuffer(); br = new BufferedReader(new InputStreamReader(in,"sjis")); String line; while ((line = br.readLine()) != null) { out.append(line + LINE_SEPA); System.out.println(line); } System.out.print("\n"); returns[0] = out.toString(); br.close(); in.close(); in = p.getErrorStream(); StringBuffer err = new StringBuffer(); br = new BufferedReader(new InputStreamReader(in)); while ((line = br.readLine()) != null) { err.append(line + LINE_SEPA); } returns[1] = err.toString(); returns[2] = Integer.toString(p.waitFor()); return returns; } finally { if (br != null) { br.close(); } if (in != null) { in.close(); } } } public static void main(String[] args) throws IOException, InterruptedException { ArrayList a = new ArrayList(); CommandExec.execCommand(new String[]{"C:\\Program Files\\juman\\juman.exe","<","C:\\Program Files\\juman\\test1.txt"}); } } これをおなじ解析ツールのchasenを実行した場合は上手くいくのですがなぜでしょうか? chasenの場合は以下のようにしてます。 CommandExec.execCommand(new String[]{"C:\\Program Files\\ChaSen\\chasen.exe","C:\\Program Files\\Chasen\\test1.txt"}); よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAとGnuplot

    javaからGnuplotを起動させ、グラフのプロットを行いたいのですがうまくいきません。 ソースは String gnuplot_cmd = "plot sin(x)" ; try { p = Runtime.getRuntime().exec("C:~省略~\\wgnuplot.exe"); } catch (IOException e) { e.printStackTrace(); } pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(p.getOutputStream()))); pw.print(gnuplot_cmd); pw.close(); です。 起動はするのですが、プロットの命令がうまく伝わりません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaアプリケーションからコマンド実行結果の取得

    javaアプリケーションからcatコマンドを実行し、その結果を取得したいのですが、うまくいきません。runtime.exec()実行中にエラーとなります。 String cmd = "cat error.log; echo $status"; Runtime runtime = Runtime.getRuntime; Process process = runtime.exec(cmd); rshを使うとOKです。 "rsh localhost cat error.log; echo $status" shを使うとNGです。 "sh -c cat error.log; echo $status" "sh -c \"cat error.log\"; echo $status" ターミナルからは上記で内容取得、および、結果取得はできるのですが。 環境は、UNIX JDK1.2.1です。 よろしくお願いします。

  • Javaプログラムから外部コマンドを呼び出す

    String com = "ls -l"; Process pro = Runtime.getRuntime().exec(com); 上記のようにして、外部コマンドを実行しています。 この方法を使用すると投げたコマンドが終了してしまうまで、後の処理が行われません。 バックグラウンド処理を行いたかったので、 String com = "ls -l &"; Process pro = Runtime.getRuntime().exec(com); としてみましたが、結果は変わりませんでした。 何か別の指定方法が存在するのでしょうか。 ご存知の方、ぜひ教えてください。

    • ベストアンサー
    • Java

専門家に質問してみよう