在 Java 中调用 C 程序
Call a C program in Java
我知道已经有一些关于此的帖子,但其中 none 回答了我的问题。
情况是这样的,我有用 C 编写的程序,但我在 java 中开发了 GUI。所以我需要做的是在单击按钮或组合框时调用我的 C 程序。
为了做到这一点,是否可以只编译 C 程序然后在我的 java 接口中调用它? (如果可能的话,我该怎么做?)。
或者我必须使用 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();
我知道已经有一些关于此的帖子,但其中 none 回答了我的问题。
情况是这样的,我有用 C 编写的程序,但我在 java 中开发了 GUI。所以我需要做的是在单击按钮或组合框时调用我的 C 程序。
为了做到这一点,是否可以只编译 C 程序然后在我的 java 接口中调用它? (如果可能的话,我该怎么做?)。
或者我必须使用 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();