如何使用子进程从父目录 运行 .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);
});
在本例中,我使用的是 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);
});