从java内部调用node.js脚本
如何在java中调用node.js并将console.log值保存在字符串变量中?无法完成。对于普通的JS,您可以使用Rhino,但是对于节点,您需要确保它位于路径中,然后调用Runtine.exec或带有ByteArrayOutputsreams的ProcessBuilder,这些ByteArrayOutputsreams稍后可以转换为字符串。节点代码无法访问Java,反之亦然。Java应用程序可以与正在运行的node.JS应用程序通信。例如,您可以在可用端口上运行Node.JS应用程序,Java应用程序可以通过tcp套接字与之通信 或者,您可以创建一个http服务器并公开一个您的Java应用程序可以使用的rest服务 或者,正如md_5所说,您可以使用Runtime.exec,然后在生成的进程上调用getInputStream node.js和Java之间的通信方式与其他跨应用程序的通信方式没有什么不同 还可以使用Node Java之类的东西从Node.JS应用程序调用Java代码从java内部调用node.js脚本,java,node.js,console,Java,Node.js,Console,如何在java中调用node.js并将console.log值保存在字符串变量中?无法完成。对于普通的JS,您可以使用Rhino,但是对于节点,您需要确保它位于路径中,然后调用Runtine.exec或带有ByteArrayOutputsreams的ProcessBuilder,这些ByteArrayOutputsreams稍后可以转换为字符串。节点代码无法访问Java,反之亦然。Java应用程序可以与正在运行的node.JS应用程序通信。例如,您可以在可用端口上运行Node.JS应用程序,Ja
检查这些允许您在jvm内运行node.js脚本的项目
- (阿皮吉)
- (红帽)
- (甲骨文)
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class RunScriptFileDemo {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
FileReader reader = new FileReader("yourFile.js");
engine.eval(reader);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
请检查,您可以在java应用程序中嵌入node.js运行时
应用程序和在两者之间共享变量。我尝试使用Runtime.getRuntime().exec(…)调用jshint,但我一直得到异常:java.io.IOException:无法运行程序“jshint”CreateProcess error=2,系统找不到指定的文件;在常规命令行中,它可以正常工作,不过。。。我不知道问题是什么:(你刚才提到连接一个正在运行的node.js应用程序,但事实并非如此。正如@Somatik所提到的,jvm中有运行node.js应用程序的解决方案。这个答案完全无关,我想知道为什么它会有更多的投票!!nodyn不再被积极维护。(来自nodyn github网站)..就像avatar js一样,它不会运行Node.js程序。它只会运行普通的javascript程序。正如其他评论员所说,需要添加avatar.js、nodyn或trireme才能使Node.js的任何功能正常工作。