2013-01-11 18 views

Odpowiedz

3

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.

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

+0

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 :( –

+0

wspomniałeś o połączeniu z działającą aplikacją node.js, ale tak nie jest. .js aplikacje wewnątrz jvm, jak wspomniano @ Somatik –

+0

Ta odpowiedź jest całkowicie niezwiązana, zastanawiam się, dlaczego ma ona głosów! – Willa

0

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.

0

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

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

Powiązane problemy