【发布时间】:2022-01-28 13:20:12
【问题描述】:
我正在尝试从不同的目录运行 java 类文件。但是,它总是给出错误“Could not find or load main class {dirpath}”
我的项目目录如下:
- NodeProject
- code
- Main.java
- javaClasses
- index.js
“code”文件夹包含 java src 文件,我将其作为候选人/用户的输入并将其保存为 filename.java 和文件夹“javaClasses”,其中应包含 .class 文件编译后。
index.js 是我通过 npm start
我的 index.js 代码如下:
const spawnSync = require("child_process").spawnSync;
const { exec } = require("child_process")
const path = require('path');
let filepath = path.join(__dirname, "code", "Main.java");
let dirpath = path.join(__dirname, "code", "javaClasses");
let folderPath = path.join(__dirname, "code");
const run = async (command, args) => {
let options = "";
let output = spawnSync("javac", ["-d", dirpath, filepath]); /// creates Main.class file in javaClasses folder
exec(`${command} "${args}" | java -cp ${dirpath} Main`, (error, stdout, stderr) =>{
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
}
let s ="22"
run("printf", [s]);
.class 文件编译成功,exec 命令报错。
我尝试将 dirpath 替换为实际 src 文件所在的 folderpath,但无济于事。
我在某个地方看到了尝试 cd {path} & java Main 但它仍然不起作用并给出相同的错误。
另外,我的 src 文件没有像 package code 那样的任何包导入,因为我从用户输入中获取了整个 src 文件。
任何帮助将不胜感激!
【问题讨论】:
标签: java node.js classpath child-process spawn