[問題] Runtime.exec和waitFor的用法

看板java作者 (把握當下)時間18年前 (2007/12/26 08:31), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
各位前輩好,小弟最近寫了一個簡單的程式如下, 主要是希望程式能在cmd下執行下面這串指令 java -cp classes ailab.mi.SampleMI big5_mi.cfg (本程式和外部程式檔案都在同一個資料夾) 我的程式碼在最下面,但是都沒辦法順利的讓外部程式順利的去跑, 這是印出的錯誤,可是我不確定問題是出在哪, 是下的指令寫錯還是時間不夠被中斷,可以請各位前輩幫忙看看嗎?謝謝! 錯誤資訊: java.lang.NoClassDefFoundError: big5_mi/cfg Exception in thread "main" </ERROR> Process exitValue: 1 程式碼: class ExecConfig { public void execCfg() throws IOException { String cmd = "java -cp classes ailab.mi.SampleMI big5_mi.cfg"; try { Runtime rt = Runtime.getRuntime(); Process ps = rt.exec(cmd); InputStream stderr = ps.getErrorStream(); InputStreamReader isr = new InputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null; System.out.println("<ERROR>"); while ( (line = br.readLine()) != null) System.out.println(line); System.out.println("</ERROR>"); int exitVal = ps.waitFor(); System.out.println("Process exitValue: " + exitVal); } catch (Throwable t){ t.printStackTrace(); } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.126.11.236

12/26 09:19, , 1F
請先確定 Runtime 的工作目錄在哪裡...
12/26 09:19, 1F
謝謝版大,我其實不太懂要怎麼設,我再詳細點說明, java -cp classes ailab.mi.SampleMI big5_mi.cfg 原本我的外部程式用上面這串指令在 E:\MI_TOOL> 下執行可以順利完成, 現在我寫的另一個程式要去呼叫他, 一樣在 E:\MI_TOOL 這個資料夾下使用runtime呼叫這個指令, 可是就出了問題, 其實我要呼叫的package是在 E:\MI_TOOL\classes\classes 裡, 但是我的外部程式需要一個config檔big5_mi.cfg傳入, 這個檔案在E:\MI_TOOL中,我不知道該如何正確的寫cmd中的指令, 讓Runtime能順利進行,麻煩指導一下,謝謝! ※ 編輯: EasyIsBeauty 來自: 122.126.11.236 (12/26 19:09)

12/26 22:12, , 2F
給它全寫成 absolute path, 就是 E:\\MI_TOOL\\....
12/26 22:12, 2F

12/26 22:12, , 3F
classpath 也好、.cfg 也好,全都寫成 absolute path
12/26 22:12, 3F

12/27 14:47, , 4F
謝謝各位幫助,後來發現是我腦殘了,路徑打錯了...
12/27 14:47, 4F
文章代碼(AID): #17SQ3fKb (java)