2013-01-11 22 views

回答

3

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之間的通信方式沒有從可以做其他跨應用程序通信不同。

也可以使用類似node-java的方式從Node.JS應用程序中調用Java代碼。

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

+0

我打過電話jshint使用調用Runtime.getRuntime()EXEC(...),但我不斷收到異常:java.io.IOException異常:不能運行程序 「jshint」 CreateProcess的錯誤= 2,系統找不到指定的文件; 從常規命令行它工作得很好,雖然...我不知道問題是:( –

+0

你剛剛提到連接一個正在運行的node.js應用程序,但事實並非如此。有解決方案來運行節點.js應用程序在jvm中,如@Somatik提到的。 –

+0

這個答案完全沒有關係,我想知道它爲什麼有票!! – Willa

0

不能做。對於普通的JS你可以使用Rhino,但是對於Node,你需要確保它在PATH中,然後調用Runtine.exec或帶有ByteArrayOutputsreams的ProcessBuilder,稍後可以將其轉換爲字符串。節點代碼不能訪問Java,反之亦然。

0

是的,它是ve ry eassy使用java執行和node.js文件。

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

這不會運行Node.js程序,它只會運行普通的javascript程序,正如其他評論者所說,需要添加Avatar.js,nodyn或trireme來獲得Node.js的任何功能。 – AllenKll

相關問題