web-dev-qa-db-de.com

Aufruf eines node.js-Skripts aus Java heraus

Wie kann ich ein node.js in Java aufrufen und die console.log-Werte in einer String-Variablen speichern?

16
Spaniard89

Es ist möglich, dass eine Java-Anwendung mit einer laufenden Node.JS-Anwendung kommuniziert. Sie können beispielsweise eine Node.JS-App auf einem verfügbaren Port ausführen, und die Java-App kann mit ihr über TCP-Sockets kommunizieren.

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

Sie können auch einen http-Server erstellen und einen Rest-Service bereitstellen, den Ihre Java-App verwenden kann.

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

Oder wie md_5 sagt, können Sie Runtime.exec verwenden und dann getInputStream für den resultierenden Prozess aufrufen.

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

Die Möglichkeiten, mit denen Sie zwischen node.js und Java kommunizieren können, unterscheiden sich nicht von anderen anwendungsübergreifenden Kommunikationsmöglichkeiten.

Es ist auch möglich, Java-Code von Ihrer Node.JS-Anwendung mit einem Knoten wie beispielsweise Java aufzurufen. 

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

4

Überprüfen Sie diese Projekte, die das Ausführen von node.js-Skripts innerhalb des jvm ermöglichen

9
Somatik

Kann nicht gemacht werden. Für normale JS können Sie Rhino verwenden, aber für Node müssen Sie sicherstellen, dass es sich im PATH befindet, und dann Runtine.exec oder einen ProcessBuilder mit ByteArrayOutputsreams aufrufen, der später zu Strings konvertiert werden kann. Der Knotencode kann nicht auf Java zugreifen und umgekehrt.

0
md_5

Ja, es ist sehr einfach, die Datei node.js mit Java auszuführen.

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