java - 是否可以分发使用 C 生成的可执行文件的 java 桌面应用程序?

标签 java c shell shared-libraries executable

我正在开发一个运行 shell 脚本的 Java 桌面应用程序。该脚本应该运行使用 C 生成的可执行文件。我的 C 代码生成的可执行文件依赖于共享库。

我不想在应用程序中包含 C 代码。因此,当我希望分发它时,我将无法在客户端的 PC 上生成新的可执行文件。正如我所读到的,目标代码以及可执行文件都是依赖于机器的,因此我将无法在具有不同硬件配置的客户端机器上运行此可执行文件(通过在我的机器上编译和链接生成)。

现在我只在 JAR 中包含了可执行文件,并且我能够在 Java 中运行 shell 脚本(在 Java 中使用 Runtime.getRuntime().exec(shell_script))。正如我之前所说,此可执行文件依赖于共享库,当软件(执行脚本)在不同的 PC 上运行时,它会报告错误,指出缺少其中一个共享库。

我想要关于如何运行在不同计算机上编译和链接的可执行文件的建议,该可执行文件依赖于桌面应用程序中的共享库(需要分发)。

如果我有任何错误或者您觉得我误解了任何概念,请发表评论。 提前致谢。

最佳答案

  1. 将您的 C 代码编译为每个受支持的不同可执行文件 操作系统并将它们全部放入您的 JAR 文件中。
  2. 从 Java 应用程序中检测当前操作系统并 extract the proper executable for that OS from your JAR file.
  3. 运行提取的可执行文件。

关于java - 是否可以分发使用 C 生成的可执行文件的 java 桌面应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795158/

相关文章:

linux - 如何在linux shell中创建一个不被Ctrl-C杀死的僵尸进程?

java - 将 JSON 作为 HTTP POST 参数发送 (Android/Java)

java - 如何在 java 中提取 X509Certificate 的有效性?

c - 回文分区问题中此 DP 数组的基本情况 dp[0] = -1 的目的是什么?

c - 模幂运算

ruby-on-rails - Dotenv 多行变量

java - 如何摆脱那个讨厌的前导加号?

java - 如何通过 JavaFX 应用程序将变量传递给 Controller ​​?

c - 发送/接收的 MPI 数据类型必须匹配吗?

python - 如何将执行的shell命令的结果存储在python的变量中?