在Java中调用C程序
我知道已经有一些关于这方面的帖子了,但是没有一个能回答我的问题 在这种情况下,我用C编写了程序,但我用java开发了GUI。所以我需要做的是,当我点击按钮或组合框时调用我的C程序 为了做到这一点,是否可以只编译C程序,然后在java接口中调用它?(如果可能,我该怎么做?)在Java中调用C程序,java,c,call,Java,C,Call,我知道已经有一些关于这方面的帖子了,但是没有一个能回答我的问题 在这种情况下,我用C编写了程序,但我用java开发了GUI。所以我需要做的是,当我点击按钮或组合框时调用我的C程序 为了做到这一点,是否可以只编译C程序,然后在java接口中调用它?(如果可能,我该怎么做?) 或者我必须使用JNI吗?(我读过一些关于它的帖子,但仅仅为一个项目学习它似乎相当复杂)。要获得最大的互操作性,您应该使用JNI,但作为一种简单的方法,只需编译C代码并使用Runtime.getRuntime().exec()从
或者我必须使用JNI吗?(我读过一些关于它的帖子,但仅仅为一个项目学习它似乎相当复杂)。要获得最大的互操作性,您应该使用JNI,但作为一种简单的方法,只需编译C代码并使用
Runtime.getRuntime().exec()从JAVA调用C可执行文件即可
如果您在UNIX下阅读响应,则可以执行以下操作:
String line;
Process p = Runtime.getRuntime().exec( "/path/to/C/executable" );
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
是的,您必须使用JNI从Java调用本机方法如果您需要C代码与Java程序进行互操作,那么使用JNI(或JNA)是正确的解决方案。如果您只想启动一个编译过的程序,那么您可能会通过系统命令执行它(注意,这可能会导致许多其他问题),这不会很好地结束。你应该更仔细地考虑这个问题。将C程序移植到Java。是时候。你会省去很多心痛的。重复使用C可执行文件所带来的“节省”不值得这么辛苦。谢谢,但我将使用Runtime.getRuntime().exec(),我认为如下所述。这是学校的一个项目,我们完成了教授给出的C文件,我知道使用JNI会更好,但我没有时间这么做。此外,我甚至不知道C文件中使用的每一个函数,所以我不认为我能够在Java中移植它。听起来你的教授好像被困在1990年了。太糟糕了。Runtime.exec很久以前就被淘汰了。@VGR是的,对不起……我上次使用Java已经有一段时间了。。。如果你愿意,你可以编辑我的答案