如何从java调用c ++功能

Jan*_*usz 7 c++ java java-native-interface jar system-calls

我有一个主要是GUI的Java程序,它显示了从c ++命令行工具写入xml文件的数据.现在我想在java程序中添加一个按钮来刷新数据.这意味着我的程序必须调用c ++功能.

是通过系统调用从java调用程序的最佳方法吗?c ++程序将为mac os和windows编译,并且应始终与java程序位于同一目录中.

我想生成一个可执行文件,可以将c程序存储在jar中并从我的程序中调用吗?

Dar*_*uid 6

如果您可以访问代码并希望获得外部程序的"交互式"体验(例如,调用,获取结果,进行其他调用),请研究JNI,它允许您通过包括从Java应用程序调用C或C++代码并将JNI果汁与您的C或C++应用程序相关联.

看到:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/jni.html

如果你真的需要一个"启动应用程序并获得结果"的解决方案,请查看Runtime.exec(),它允许您启动外部程序并捕获其输出.

请参阅:http: //www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page = 1

http://www.rgagnon.com/javadetails/java-0014.html


Dra*_*mon 5

假设没有更好的通信方法可用(SOAP,ICE,套接字等),我会使用调用可执行文件Runtime.exec().JNI可以直接用于界面,但我不推荐它.不,你不能把一个可执行文件放在jar中.嗯,你可以,但你不能运行它,因为shell不知道如何运行它.

  • @Pavel:更便携,更不稳定,更紧密的耦合 (2认同)