我想通过 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/