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

相关问题