Подтвердить что ты не робот

Вызов node.js script изнутри java

Как я могу вызвать node.js внутри java и сохранить значения console.log в переменной String?

4b9b3361

Ответ 1

Приложение Java может взаимодействовать с запущенным приложением Node.JS. Например, у вас может быть приложение Node.JS, работающее на доступном порту, и приложение Java может связываться с ним через сокеты tcp.

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

Или вы можете создать http-сервер и открыть службу отдыха, которую может использовать ваше приложение Java.

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 ничем не отличаются от другой связи между приложениями, которые могут быть выполнены.

Также можно вызвать код Java из вашего приложения Node.JS, используя что-то вроде node -java.

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

Ответ 3

Невозможно сделать. Для обычного JS вы можете использовать Rhino, но для Node вам нужно убедиться, что он находится в PATH, а затем вызвать Runtine.exec или ProcessBuilder с ByteArrayOutputsreams, которые позже могут быть перекодированы в строки. Код Node не может получить доступ к Java и наоборот.

Ответ 4

Да, очень сложно выполнить и node.js файл с помощью java.

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();
      }
   }
}