无法在 Heroku 上加载 DLL (Java)

Unable to load DLL on Heroku (Java)

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

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

但是当我在 heroku 上部署它时出现错误 "invalid ELF header (possible cause: endianness mismatch)"。

我该如何应对?

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

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