Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java内部调用node.js脚本_Java_Node.js_Console - Fatal编程技术网

从java内部调用node.js脚本

从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

如何在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代码


检查这些允许您在jvm内运行node.js脚本的项目

  • (阿皮吉)
  • (红帽)
  • (甲骨文)

是的,使用java执行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的任何功能正常工作。