2014-11-24 62 views
0

我正在創建一個啓動器,該啓動器通過單擊按鈕啓動一個遊戲(用任何語言編寫)。例如,遊戲我嘗試推出(用Python編寫的掃雷艇)之一,是無法成功啓動和我的代碼生成以下消息:在java中啓動單獨進程,無法找到.png文件

../Games/minesweeper/Minesweeper.py成功推出

回溯(最近通話最後一個):

文件 「../Games/minesweeper/Minesweeper.py」,線路455,在

app = Minesweeper() 

文件 「../Games/minesweeper/Minesweeper.py」,第30行,在初始化

self.loadImages() 

文件 「../Games/minesweeper/Minesweeper.py」,線71,在loadImages

self.images[1] = PhotoImage(file="1.png") 

文件 「/usr/lib64/python3.3/tkinter/ 初始化 py」 爲,線3425,在初始化

Image.__init__(self, 'photo', name, cnf, master, **kw) 

文件 「/usr/lib64/python3.3/tkinter/ 初始化 py」 爲,線3381,在初始化

self.tk.call(('image', 'create', imgtype, name,) + options) 

_tkinter.TclError:無法打開 「1.png」:沒有這樣的文件或目錄

過程exitValue:1

我能,但是隻要我的Java代碼運行這個遊戲作爲一個獨立的,啓動EXEC。 「無法打開‘1.png’回到這裏是我的過程創建代碼:

public void createProcess(String path) 
{ 
    Process cmd; 
    try 
    { 
     cmd = Runtime.getRuntime().exec(path); 
     System.out.println(path + " successful launch"); 
     InputStream stderr = cmd.getErrorStream(); 
     InputStreamReader isr = new InputStreamReader(stderr); 
     BufferedReader br = new BufferedReader(isr); 
     BufferedReader stdInput = new BufferedReader(new 
       InputStreamReader(cmd.getInputStream())); 
     String line = null; 
     System.out.println("<ERROR>"); 
     while ((line = br.readLine()) != null) 
     { 
      System.out.println(line); 
     } 
     System.out.println("</ERROR>"); 
     int exitVal = cmd.waitFor(); 
     System.out.println("Process exitValue: " + exitVal); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

任何幫助將不勝感激謝謝

+0

使用'ProcessBuilder'並更改開始目錄以反映您嘗試執行的文件的位置... – MadProgrammer 2014-11-24 03:42:10

+0

完美工作!謝謝 – user1243 2014-11-24 04:29:25

回答

0

首先,使用的ProcessBuilder類,而不是!第二,正如@MadProgrammer所述,將你的起始目錄改爲文件的位置,當你運行你的java程序時,1.png文件相對定位,並且位於你的java文件的路徑中,當你單獨運行它,1.png文件在你的python程序的路徑中,這是正確的路徑。

+0

謝謝!我應該看到這一點。編輯與java程序相關的文件路徑非常完美! – user1243 2014-11-24 04:27:08