2011-11-24 216 views
2

讓我們舉一個過分基本的例子,我有一個程序通過一個目錄並抓取目錄中的文件列表。爲了參數的緣故,假設這是用C++完成的。那麼我希望使用Java Swing來呈現文件列表?前端Java,後端C++,如何加入?

這是如何完成的?

+0

混淆Java和任何其他語言(不會編譯成JVM字節碼)是異端的。它必須都是純粹的Java,免得cooties消耗你,或者什麼。 – Omnifarious

回答

4

你可以讓你的C++程序寫入Stdout,然後你的Java程序可以讀取它。然後,您可以讓您的Java前端執行您的C++後端,然後讀取結果。

This Article是如何使用stdout/stderr的一個很好的信息來源。

1

一個基本的方法是將C++輸出存儲在文本文件中並從java中讀取它。

+2

或寫入STDOUT並讓Java讀取 – Thilo

1

C++程序將列表放入特定文件中,Java程序讀取該文件? 另一種方式可能是使用套接字(我不知道Java足夠了解它的IPC可能性),以便在「實時」節目之間進行通信。最後,如果你必須同時使用C++和Swing,那麼你就不能在一個單獨的程序中完成這個任務。

+0

+1以使用套接字。我總是喜歡這種方法。它可以是瞬時的,同步很容易。您可以讓Java程序使用TCP套接字進行偵聽,然後C++程序可以連接到該端口併發送TCP消息。 –

+2

* ...你不能在一個單獨的程序中完成*除非你使用JNI –

0

Kevin建議使用Java Native Interface(JNI)。或者,如果您需要在C++之間建立流程邊界,則需要將運行C++代碼的進程中的對象序列化爲JVM進程。

你也可以在這個Dr. Dobb's article from 1998找到一些用途。