Jak mogę wywołać plik node.js w języku Java i zapisać wartości console.log w zmiennej String?Wywoływanie skryptu node.js z wnętrza java
Odpowiedz
Aplikacja Java może komunikować się z uruchomioną aplikacją Node.JS. Na przykład, możesz mieć aplikację Node.JS uruchomioną na dostępnym porcie, a aplikacja Java może komunikować się z nią przez gniazda tcp.
http://nodejs.org/api/net.html
Lub można utworzyć serwer HTTP i narazić usługi REST, która aplikacja Java może konsumować.
http://nodejs.org/api/http.html
Albo jak md_5 mówi, można użyć Runtime.exec a następnie zadzwonić getInputStream na proces wynikające.
http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
Sposoby można komunikować się między node.js i Java nie różnią się od innych przekrojach komunikacji aplikacji, które można zrobić.
Możliwe jest również wywołanie kodu Java z aplikacji Node.JS za pomocą polecenia podobnego do node-java.
Nie można zrobić. Dla normalnego JS możesz użyć Rhino, ale dla Node będziesz musiał upewnić się, że jest on w PATH, a następnie wywołać Runtine.exec lub ProcessBuilder z ByteArrayOutputsreams, które później mogą być przekształcone w łańcuchy. Kod węzła nie może uzyskać dostępu do Javy i na odwrót.
Sprawdź te projekty, które pozwalają na uruchamianie skryptów node.js wewnątrz JVM
- https://github.com/apigee/trireme (Apigee)
- http://nodyn.io/ (RedHat)
- https://avatar-js.java.net/ (Oracle)
Tak, jest ve Aby wykonać plik i plik node.js, użyj pliku 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();
}
}
}
To nie będzie działało w programach Node.js.To będzie uruchamiać tylko zwykłe programy javascript.Jak inni komentatorzy powiedzieli, trzeba by było dodać Avatar.js, nodyn, lub trireme aby uzyskać dostęp do wszystkich funkcji Node.js. – AllenKll
Próbowałem nazywając jshint użyciu Runtime.getRuntime exec() (...), ale wciąż otrzymuję wyjątek. Java.io.IOException: Nie można uruchomić programu "jshint" błąd CreateProcess = 2, system nie można znaleźć określonego pliku; Z normalnej linii poleceń działa dobrze, chociaż ... Nie mam pojęcia, że problem jest następujący :( –
wspomniałeś o połączeniu z działającą aplikacją node.js, ale tak nie jest. .js aplikacje wewnątrz jvm, jak wspomniano @ Somatik –
Ta odpowiedź jest całkowicie niezwiązana, zastanawiam się, dlaczego ma ona głosów! – Willa