如何从另一个文件夹执行jar文件
How to execute jar files from another folder
我目前正在为 Minecraft 构建 NodeJS Web 界面。目前我正在努力启动服务器......
我目前的文件夹布局如下
./node_modules
./server
./views
app.js
package-lock.json
package.json
每次我启动位于./servers 中的服务器时,eula.txt 和其他服务器文件都会在我的主目录中生成 app.js 等等。有什么办法可以更改文件所在的目录吗?
编辑(执行 jar 的代码的简化版本):
exec = require('child_process').exec;
exec('java -jar ' + './server/spigot-1.13.2.jar', (err, stdout, stderr) => {
if (err)
throw err;
console.log(stdout);
console.log(stderr);
});
使用 spawn 你可以提供一个工作目录。
https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
const { spawn } = require('child_process');
const mc = spawn('java', ['-Xmx1024M', '-Xms1024M', '-jar', './server/spigot-1.13.2.jar', 'nogui'], { cwd: './new-server/' });
mc.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
mc.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
mc.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
更新:
看来你也可以像这样用 exec 来做到这一点:
exec('java -jar ' + './server/spigot-1.13.2.jar', { cwd: './test-server' }, (err, stdout, stderr) => {
if (err)
throw err;
console.log(stdout);
console.log(stderr);
});
我目前正在为 Minecraft 构建 NodeJS Web 界面。目前我正在努力启动服务器...... 我目前的文件夹布局如下
./node_modules
./server
./views
app.js
package-lock.json
package.json
每次我启动位于./servers 中的服务器时,eula.txt 和其他服务器文件都会在我的主目录中生成 app.js 等等。有什么办法可以更改文件所在的目录吗?
编辑(执行 jar 的代码的简化版本):
exec = require('child_process').exec;
exec('java -jar ' + './server/spigot-1.13.2.jar', (err, stdout, stderr) => {
if (err)
throw err;
console.log(stdout);
console.log(stderr);
});
使用 spawn 你可以提供一个工作目录。
https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options
const { spawn } = require('child_process');
const mc = spawn('java', ['-Xmx1024M', '-Xms1024M', '-jar', './server/spigot-1.13.2.jar', 'nogui'], { cwd: './new-server/' });
mc.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
mc.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
mc.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
更新:
看来你也可以像这样用 exec 来做到这一点:
exec('java -jar ' + './server/spigot-1.13.2.jar', { cwd: './test-server' }, (err, stdout, stderr) => {
if (err)
throw err;
console.log(stdout);
console.log(stderr);
});