web-dev-qa-db-ja.com

内部からnode.jsスクリプトを呼び出すjava

Java内でnode.jsを呼び出し、console.logの値を文字列変数に保存するにはどうすればよいですか?

18
Spaniard89

Javaアプリケーションは、実行中のNode.JSアプリケーションと通信できます。たとえば、Node.JSアプリを利用可能なポートで実行すると、Javaアプリはtcpソケット経由で通信できます。

http://nodejs.org/api/net.html

または、httpサーバーを作成して、Javaアプリが使用できるRESTサービスを公開することもできます。

http://nodejs.org/api/http.html

または、md_5が言うように、Runtime.execを使用して、結果のプロセスでgetInputStreamを呼び出すことができます。

http://docs.Oracle.com/javase/7/docs/api/Java/lang/Runtime.html

Node.jsとJavaの間で通信できる方法は、実行できる他のアプリケーション間通信と同じです。

Node-Javaのようなものを使用して、Node.JSアプリケーションからJavaコードを呼び出すことも可能です。

https://github.com/nearinfinity/node-Java

6

Jvm内でnode.jsスクリプトを実行できるようにするこれらのプロジェクトを確認してください

10
Somatik

できません。通常のJSの場合はRhinoを使用できますが、Nodeの場合はPATHにあることを確認してから、後で文字列に変換できるByteArrayOutputsreamsでRuntine.execまたはProcessBuilderを呼び出す必要があります。ノードコードはJavaにアクセスできません。その逆も同様です。

0
md_5

はい、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();
      }
   }
}
0