【发布时间】:2013-02-04 23:41:37
【问题描述】:
在 64 位 JVM 上,在 Linux 中,无论本地库加载如何,都坚持尝试加载 32 位库。
我问这是一个 clojure 和(甚至更多)java n00b。
到目前为止,我找到的答案(Using lwjgl in Leiningen/Clojure 似乎是搜索结果中最突出的)似乎适用于旧版本的 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……那些似乎不值得深入研究的更大问题)。 charles-stain 在 windows 上为我设置了“Just Worked”。
到目前为止,我能提出的最佳假设是这样的:
我怀疑必须在某个时候指定一个版本。 http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html#resources 提到了一个看起来非常合适的资源属性,但这似乎与 JNLP 没有任何关系。我想知道是否有一个清单文件位于我无法找到的 .jar 中的某个地方(这就是我的 n00bishness 发挥作用的地方......我真的不知道我在寻找什么)。
那么,有人对我应该看哪里或应该问谁有任何指示吗?我什至不知道从这里去哪里。纠缠 jMonkeyEngine 论坛、#clojure 或 lwjgl 邮件列表(或他们使用的任何东西......我实际上根本没有调查过他们的事情......我应该吗?)
接下来我将尝试将 jME 库捆绑到我自己的存储库中。这似乎是一项艰巨而艰巨的任务,我决定在解决这个问题时在这里提出。
我知道这很含糊,对此我深表歉意。我的 google-fu 让我失望了。任何人都可以提出任何建议,我将不胜感激。
提前致谢!
【问题讨论】:
标签: clojure leiningen jmonkeyengine