2011-11-24 86 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找到一些用途。