In this case, I am using Node.js ChildProcess. Let’s say the application file (index.js, for example) is in folder1
. This folder also has folder2
, which is where the class file is. So, when I call spawn
from folder1
, the command’s current directory is folder1
. However, I can’t do java ./folder2/MyFile
.
Here’s what I tried:
async function run(path){ let child = spawn('java', [path], { stdio: [process.stdin, process.stdout, process.stderr] //for testing purposes }) }
Using function run
on ./folder2/MyFile
returns:
Error: could not find or load main class ..folder2.MyFile
I assume this has something to do with java and classpath. I saw an answer involving setting the classpath to the target directory (folder2
) but it didn’t do anything.
In short, how can I run a .class file from a different directory?
Advertisement
Answer
You can use exec instead of spawn so you can use two commands with & symbol which the second command runs when the first one finish without fail. I think this might work for you.
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); });