java - 无法在 Heroku (Java) 上加载 DLL

标签 java c++ heroku dll java-native-interface

我想通过 JNI 从 C++ 调用方法。为此,我需要使用系统方法 System.loadLibrary。

首先,我尝试在本地主机上创建它。我遇到了类似“UnsatisfiedLinkError: not found DLL in java.library.path”的问题。此问题的解决方案是本指南中的 NativeUtils 类 http://adamheinrich.com/blog/2012/how-to-load-native-jni-library-from-jar/ .它在本地主机上完美运行。

但是当我在 heroku 上部署它时,出现错误“无效的 ELF header (可能的原因:字节顺序不匹配)”。

我该如何应对?

最佳答案

Heroku 服务器基于 Linux,而您的 DLL 只能在 Windows 上运行。这就是您收到错误的原因,解决方案是创建一个 Linux 共享库。我建议使用您的 Heroku 实例所具有的 Linux 风格配置一个虚拟机,在那里构建您的库,并在您的存储库中使用它而不是 DLL。

编辑:我发现一篇文章可以帮助您直接在 Heroku 实例上编译库:http://www.saintsjd.com/2014/05/12/run-vendored-binaries-on-heroku.html

关于java - 无法在 Heroku (Java) 上加载 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733058/

相关文章:

java标题栏修改

c++ - 一次迭代 Vector 8 字节并执行按位运算

c++ - 是否在 C++ 11 的编译时或运行时自动推断类型?

ruby-on-rails - Heroku:RAILS_ROOT 返回应用程序文件夹而不是根文件夹

java - Spring 框架

java - 更改 jTextPane 中选定文本的颜色

java - 为什么 invokeAll 会因池大小有限的 ExecutorService 而失败

MySQL 的 C++ 绑定(bind)

node.js - 使用nodejs在heroku上自动关闭套接字连接

python - Heroku 上的 Django - 缺少静态文件 manifest.json 文件