2013-06-03 154 views
2

我搜索使一個Java進程和一個C#進程綁定。 我最後的想法是:編譯一個java進程到一個.exe中,以便直接從c#進程啓動它而不需要通過java.exeC#和Java之間的通信:過程

這可能嗎?如果是的話,你能幫我一下嗎?

有一個好的一天

編輯:這topic不回答我的問題,因爲如果我想使用過程中,這是因爲我想,C#程序中運行Java程序

+0

您無法將Java源文件編譯爲'exe';您可以通過C/C++ API以編程方式調用JVM;也許包裝存在於C#中? – fge

+0

如果他們「僅」必須進行通信,則可以使用本地網絡堆棧(套接字)。或者開始這個過程並使用std.in/out流。 – Fildor

回答

1

您可以使用Process框架來啓動您的Java程序(編譯爲可運行的JAR)並傳入命令行參數,以允許Java程序「知道」如何操作,假定通信在兩個程序之間不是非常複雜。

Process javaProcess = new Process(); 
javaProcess.StartInfo.FileName = "C:\\Path\\To\\yourJavaProgram.jar"; 
javaProcess.StartInfo.Arguments = "EXECUTE_FROM_C_SHARP"; //or whatever 
javaProcess.Start(); 

//Wait for the Java program to finish doing its thing before resuming 
javaProcess.WaitForExit(); 
+0

我們可以做到嗎?我總是看到我們必須通過java.exe!所以非常感謝你,我會盡快嘗試 – user2447951

+0

你是否認爲它有效?因爲當我嘗試它時我有一個錯誤(但我可以在它消失之前閱讀)。謝謝 – user2447951

0

利用stdin和stout流。在C#中調用Java程序開始一個新進程。該進程的stdin將路由到java進程的標準輸入(System.in默認情況下)。標準輸出也是如此。