2012-12-06 52 views
-2

我正在尝试与一些简单的.exe文件进行交互,这些文件是通过一些Python代码创建的。我已经通过Windows cmd测试了.exe,它工作得很好。当我尝试通过我的java程序向.exe发送相同的输入以生成我需要的图时,OutputStream只会向控制台写入“错误”。我试图通过OutputStream发送一个字符串和一个整数,但是无论如何都会得到相同的结果。我已经与X-Foil.exe进行了交互,这是一款用于生成翼型数据文件的控制台应用程序,通过这个相同的Java应用程序取得了巨大的成功。由于我必须对数据进行曲线拟合,因此我使用Python与matplotlib插件,然后使用py2exe创建.exe。我试图创建一个Web应用程序,其最终目标是设计一个机翼,从而使用Java。这是我与有问题的方法是使用:Java:OutputStream to .exe控制台应用问题

public void PyGrapher(String NACA_4d) { 
    try { 
     ProcessBuilder builder = new ProcessBuilder("PyAirfoilGraphing\\dist\\GraphPolars.exe"); 
     builder.redirectErrorStream(true); 
     Process pr = builder.start(); 
     OutputStream out = pr.getOutputStream(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); 

     double CL_alpha; 

     out.write((NACA_4d + "\n").getBytes()); 

     System.out.println(in.readLine()); 
     System.out.println(in.readLine()); 
     System.out.println(in.readLine()); 
     System.out.println(in.readLine()); 
     //CL_alpha = Double.parseDouble(in.readLine()); 

     pr.waitFor(); 
     pr.destroy(); 
     out.close(); 
     in.close(); 

    } catch (IOException | InterruptedException ex) { 
    } 
} 

以下是我从控制台读取:

Input NACA 4-digit code: error 
    Traceback (most recent call last): 
    File "GraphPolars.py", line 16, in <module> 
    IOError: [Errno 2] No such file or directory: '..\\..\\AirfoilPolars\\NACA_0024.dat' 

我难倒,并且已经很长一段时间。 python文件没有问题,它在当前目录中自行运行。任何人都可以帮忙吗?

-Nickķ

回答

0

难道是相对路径的东西吗? Python默认路径可能没有选取本地目录/文件。

你有没有尝试传递完整的Windows路径'C:\ Foo \ bar \ AirFoil \ ...'以及正确转义的'\'字符?

+0

我传递给exe的唯一东西是0024,模块完成剩下的工作。我可以毫无问题地运行GraphPolars.exe。 – KonkAero

+0

下一个问题很简单; 'GraphPolars'和你的Java程序在同一个文件夹中?你能正确地从Java程序目录独立运行'GraphPolars'吗? – Arcturus

+0

是的,那是有效的。生成的图表在单独运行时保存到正确的目录,因此文件在那里。 – KonkAero