Как я могу вызвать node.js внутри java и сохранить значения console.log в переменной String?
Вызов node.js script изнутри java
Ответ 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.
Ответ 2
Проверьте эти проекты, которые позволяют запускать скрипты node.js внутри jvm
- https://github.com/apigee/trireme (Apigee)
- http://nodyn.io/ (Redhat)
- https://avatar-js.java.net/ (Oracle)
Ответ 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();
}
}
}