【问题标题】:Java: OutputStream to .exe Console App issueJava:OutputStream 到 .exe 控制台应用程序问题
【发布时间】:2023-03-25 17:11:02
【问题描述】:

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

    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文件没有问题,在当前目录下自行运行良好。有人可以帮忙吗?

-尼克K

【问题讨论】:

    标签: java outputstream


    【解决方案1】:

    可能是具有相对路径的东西吗? Python 默认路径可能无法获取本地目录/文件。

    您是否尝试将完整的 Windows 路径“C:\Foo\bar\AirFoil\...”与正确转义的 '\' 字符一起传递给它?

    【讨论】:

    • 我传递给 exe 的唯一内容是 0024,其余的由模块完成。我可以毫无问题地在当前折叠中运行 GraphPolars.exe。
    • 下一个问题很简单; 'GraphPolars' 和你的 Java 程序在同一个文件夹中吗?你能从你的 Java 程序目录中正确运行“GraphPolars”吗?
    • 是的,这行得通。单独运行时生成的图形会保存到正确的目录中,因此文件在那里。
    • 这里要选择第一行写入; out.write((NACA_4d + "\n").getBytes()); // 向 Python 程序输出正确的整数值 out.write(NACA_Code); // 输出等价的 ASCII 码
    • 我不知道,谢谢。但我仍然收到一个 python 错误,所以它可能是一个目录问题,但它本身运行良好的事实并没有造成场景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    相关资源
    最近更新 更多