在 64 位 JVM 上,在 Linux 中,无论本地库加载如何,都坚持尝试加载 32 位库。
我问这是一个clojure和(甚至更多)java n00b。
到目前为止我找到的答案(在 Leiningen/Clojure 中使用 lwjgl似乎是搜索结果中最突出的)似乎适用于旧版本的 lein,问题围绕 project.clj 中的 :native-dependencies 或 LD_LIBRARY_PATH 旋转。
我正在重新发明轮子并将基本的 jME 教程翻译成 clojure,作为学习它们的一些个人家庭作业。在迄今为止我发现的所有教程和示例中,人们展示了他们是如何做到这一点的,这部分似乎“正常工作”。
(就此而言,它在 Windows 下对我来说工作得很好)。
我正在使用 lein 构建一个新的空项目。我已经在 clojars 上设置了对各种版本的 jMonkeyEngine 库的依赖。在 'lein deps' 之后,liblwjgl64.so 和 libopenal64.so 在我的项目目录的根目录中结束。
当我尝试“lein run”时,它会显示设置的猴子启动画面,然后在尝试实际运行时抛出异常,因为它正在尝试加载 liblwjgl.so。
该文件位于 target/native/linux 和 target/native/linux64 下(但奇怪的是,不在 target/native/linux32 下)。
如果我将它想要的文件复制到我的项目的根目录中,错误将变为“错误的 ELF 类:ELFCLASS32(可能的原因:架构字宽不匹配)”,这是谷歌不断给我的另一组讨论。那里提到的解决方案似乎都相当于“切换到 32 位 JVM 以使 Minecraft 正常工作”,但我更愿意了解正在发生的事情的实际线索。
这个问题在我可以在 clojars 中使用的每一组依赖库中都非常一致(无论如何,回到第 2 版……那些似乎不值得深入研究的更大问题)。查尔斯染色在窗户上为我设置了“刚刚工作”。
到目前为止,我能够提出的最好的假设是这样的:
我怀疑必须在某个时候指定一个版本。http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html#resources提到了一个看起来非常合适的资源属性,但这似乎没有任何意义用 JNLP 做。我想知道是否有一个清单文件位于我无法找到的 .jar 中的某个地方(这就是我的 n00bishness 发挥作用的地方......我真的不知道我在寻找什么)。
那么,是否有人对我应该看哪里或应该问谁有任何指示?我什至不知道从这里去哪里。纠缠 jMonkeyEngine 论坛、#clojure 或 lwjgl 邮件列表(或他们使用的任何东西......我实际上根本没有调查过他们的事情......我应该吗?)
我要尝试的下一件事是将 jME 库捆绑到我自己的存储库中。这似乎是一项艰巨而艰巨的任务,我决定在处理这个问题时在这里提出。
我知道这很模糊,我为此道歉。我的 google-fu 让我失望了。我会很感激任何人能提出的任何建议。
提前致谢!