如何使用子进程从父目录 运行 .class 文件?

How can I use a child process to run a .class file from a parent directory?

在本例中,我使用的是 Node.js ChildProcess。假设应用程序文件(例如 index.js)在 folder1 中。此文件夹还有 folder2,这是 class 文件所在的位置。因此,当我从 folder1 调用 spawn 时,命令的当前目录是 folder1。但是,我做不到 java ./folder2/MyFile.

这是我尝试过的:

async function run(path){
    let child = spawn('java', [path], {
            stdio: [process.stdin, process.stdout, process.stderr] //for testing purposes
        })
}

./folder2/MyFile 上使用函数 run returns:

Error: could not find or load main class ..folder2.MyFile

我认为这与 java 和 classpath 有关。我看到了一个涉及将 class 路径设置为目标目录 (folder2) 的答案,但它没有做任何事情。

简而言之,我怎样才能 运行 一个来自不同目录的 .class 文件?

您可以使用 exec 而不是 spawn,这样您就可以使用带有 & 符号的两个命令,当第一个命令成功完成时,第二个命令运行。 我想这可能对你有用。

const exec = require('child_process').exec;
exec("cd ./folder2 & java MyFile", function(
    error: string,
    stdout: string,
    stderr: string
) {
    console.log(stdout);
    console.log(error);
    console.log(stderr);
});