如何在ubuntu中从java程序运行c可执行文件

如何在ubuntu中从java程序运行c可执行文件,java,c,ubuntu,Java,C,Ubuntu,我无法从ubuntu中的java程序运行c可执行文件 我使用以下命令创建了可执行文件: gcc ex.c -o process 在java程序中,我尝试了我能找到的一切,但没有结果 Runtime.getRuntime().exec("/home/cori/Desktop/process.exe); 另一种方法 Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("process"); 请建议。*nix-like系统不会对可执

我无法从ubuntu中的java程序运行c可执行文件

我使用以下命令创建了可执行文件:

gcc ex.c -o process
在java程序中,我尝试了我能找到的一切,但没有结果

Runtime.getRuntime().exec("/home/cori/Desktop/process.exe);
另一种方法

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("process");

请建议。

*nix-like系统不会对可执行文件使用*.exe后缀

Runtime.getRuntime.exec/home/cori/Desktop/process

应该行得通。但我还是没有得到你想要的结果。从流程类中可以得到的唯一信息是很少的流及其返回状态。对于你来说,c程序应该是0。如果返回0,则结束源代码


和:你提到的两种方法是相同的。仅第一个使用调用方法链接:

我假设您可以访问C代码,因为我看到您正在尝试编译它

您考虑过使用Java本机接口吗?Java允许您调用非Java代码,通常称为本机代码

您必须遵循一系列步骤才能使其正常工作。 请参见此处的示例

使用本机方法创建Java类 加载实现该方法的库 从Java调用本机方法 使用javah实用程序生成头文件 创建c代码以实现java存根方法 根据操作系统编译c程序tp create.so或.dll 设置LD_库路径 运行Java代码
这是一个漫长的过程,需要一些尝试和错误才能使其正确。但一旦你弄明白了,这是一个非常强大的工具。这是Java的一项非常古老的功能,因此有很多在线资源。

您有任何例外吗?你读出输出了吗?在此示例中,流程是一个可执行文件,它从文本文件读取并创建一个jpg文件。当我双击它来运行它时,它运行得很好,但不适用于java代码。不会抛出任何异常。这真的很好,但这没有帮助。有了这些信息,我可以建议你做一些事情,比如你没有权限访问用户的桌面。您必须提供更像异常或运行时输出的内容。对此没有输出,我应该得到的唯一输出是桌面上的图像文件。我有权限。我没有使用.exe就试过了。没有输出。我的可执行文件将从文件中读取数据并将其转换为jpg格式的文件。我只想使用java代码,这样按下一个按钮就可以调用这个可执行文件,并在桌面上创建一个jpg图像。