java - 如何从 C 程序运行 Java 程序?

标签 java c linux terminal

我对此进行了研究,但结果要么已有 10 多年的历史,并且没有解释 JNI 是什么或者它是否是唯一的方法,或者结果是针对 C++ 或 C# 的。所以这是我的问题:

如何从 C 程序运行 Java 程序,以下面的代码为例?为了让 C 程序成功调用 Java,我对以下代码进行了哪些具体更改带参数的程序?

在CentOS终端中,当我在命令行中键入以下内容时,我能够成功运行Java程序:

java -cp . my.package.SomeClass 1 2 3

同样,在终端的同一文件夹中,当我在命令行中键入以下内容时,我能够成功运行 C 程序:

./hello  

hello.c 的代码是:

#include <stdio.h>

main() {
    printf("Hello World from C!\n");
}  

如何修改 hello.c 的代码,以便它也使用参数 1 2 3< 运行 my.package.SomeClass/

例如,如何完成以下操作,但不会引发错误:

#include <stdio.h>

main() {
    printf("Hello World from C!\n");
    java -cp . my.package.SomeClass 1 2 3  //What is the right syntax here?
}  

编辑

我最感兴趣的是展示如何调用方法的答案,例如 SomeClass.someMethod(1,2,3)

最佳答案

如果您想要做的全部就是运行java -cp。 my.package.SomeClass 1 2 3 从您的程序中,您可以只使用运行外部命令的 system :

system("java -cp . my.package.SomeClass 1 2 3");

这是最简单的解决方案,但不太灵活 - 例如,除了给 Java 程序提供参数之外,您无法与它交互。

关于java - 如何从 C 程序运行 Java 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130698/

相关文章:

Java正则表达式将 "n' t"转换为 "not"

java - 如何将结构数组传递给函数以便在 JNA 中获取结果

c - 如何根据提交的解决方案评估代码是否正确

c - 确定谁在石头剪刀布中获胜的一行

java - 隔离 Liferay 对前端和 REST URL 的访问

java - 带有https的tomcat发送单独的数据包

c - 有没有一种快速可靠的 POSIX 方法来检查当前文件偏移量是否在文件末尾?

linux - 如何在目录和子目录的文件中递归搜索模式并生成sha1sum?

linux - 在 ubuntu 上使用 linux 源代码编译模块

java - NFC 应用程序在 enableForegroundDispatch 上崩溃