我搜索使一個Java進程和一個C#進程綁定。 我最後的想法是:編譯一個java進程到一個.exe中,以便直接從c#進程啓動它而不需要通過java.exeC#和Java之間的通信:過程
這可能嗎?如果是的話,你能幫我一下嗎?
有一個好的一天
編輯:這topic不回答我的問題,因爲如果我想使用過程中,這是因爲我想,C#程序中運行Java程序
我搜索使一個Java進程和一個C#進程綁定。 我最後的想法是:編譯一個java進程到一個.exe中,以便直接從c#進程啓動它而不需要通過java.exeC#和Java之間的通信:過程
這可能嗎?如果是的話,你能幫我一下嗎?
有一個好的一天
編輯:這topic不回答我的問題,因爲如果我想使用過程中,這是因爲我想,C#程序中運行Java程序
您可以使用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();
我們可以做到嗎?我總是看到我們必須通過java.exe!所以非常感謝你,我會盡快嘗試 – user2447951
你是否認爲它有效?因爲當我嘗試它時我有一個錯誤(但我可以在它消失之前閱讀)。謝謝 – user2447951
利用stdin和stout流。在C#中調用Java程序開始一個新進程。該進程的stdin將路由到java進程的標準輸入(System.in默認情況下)。標準輸出也是如此。
您無法將Java源文件編譯爲'exe';您可以通過C/C++ API以編程方式調用JVM;也許包裝存在於C#中? – fge
如果他們「僅」必須進行通信,則可以使用本地網絡堆棧(套接字)。或者開始這個過程並使用std.in/out流。 – Fildor