0

我正在尝试创建一个 node-pty 进程。在本地开发时,这工作正常,没有问题。但是,当它在 Heroku 上运行时,它会给出错误:/app/.jdk/bin/java: cannot execute binary file

我尝试用 just 运行它["java"],这给出了同样的错误。因此,它无法启动 java 二进制文件。

但是,当我手动键入命令时,它工作得很好。

  const shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash';

  const ptyProcess = pty.spawn(shell, ["java", "-jar", "Klox.jar"], {
    name: 'xterm-color',
    cols: 80,
    rows: 30,
    cwd: process.env.HOME,
    env: process.env
  });

知道如何解决这个问题吗?

4

1 回答 1

0

解决了问题,

不要使用 powershell 或 bash 生成 shell,而是直接使用您尝试运行的可执行文件生成 shell。所以,java就我而言。

实际上,我做了什么:

  const ptyProcess = pty.spawn("java", ["-jar", "Klox.jar"], {
    name: 'xterm-color',
    cols: 80,
    rows: 30,
    cwd: process.env.HOME,
    env: process.env
  });

因此,“java”而不是旧的 shell 变量。

要记住的另一件事是,在 Windows 上将.exe扩展名添加到末尾,否则它会说找不到文件。例如:java.exe在 Windows 和javaLinux 上。

于 2021-11-23T15:55:52.253 回答