9

解决方案

(1) (println (. System getProperty "java.library.path"))

这给了我一个 java 寻找本地扩展的地方的列表。

然后,我采用了 lwjgl 本机扩展,并将它们放在那里。

对我不起作用的东西(可能是因为我使用不当)

(*) setting :native-path
(*) setting :native-dependencies

问题

我的设置:

(lein deps; echo "====="; cat project.clj; echo "====="; cat src/main.clj; echo "====="; lein repl) &> log

“日志”的内容

    Copying 10 files to /Volumes/ramdisk/fail/lib
=====
(defproject
  mincase "0.0.1"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.lwjgl.lwjgl/lwjgl "2.8.2"] ]
  :repositories {"local" "/Users/x/z/maven_repo"}
  :jvm-opts ["-Xms4g"  "-Xmx4g"]
  :repl-init main
  )

=====
(ns main
 (:import org.lwjgl.opengl.Display)) 
=====
REPL started; server listening on localhost port 31235
UnsatisfiedLinkError no lwjgl in java.library.path  java.lang.ClassLoader.loadLibrary (ClassLoader.java:1860)
clojure.core=> 

注意——我已经做了一个“lein deps”,所以 lwjgl 库已经被拉进了 maven。我不明白的是:

(*) how do I get access to lwjgl from Clojure?
(*) more importantly, how do I debug which step this whole thing has gone wrong at?

$查找库

lib
lib/clojure-1.4.0.jar
lib/jinput-2.0.5.jar
lib/jinput-platform-2.0.5-natives-linux.jar
lib/jinput-platform-2.0.5-natives-osx.jar
lib/jinput-platform-2.0.5-natives-windows.jar
lib/jutils-1.0.0.jar
lib/lwjgl-2.8.2.jar
lib/lwjgl-platform-2.8.2-natives-linux.jar
lib/lwjgl-platform-2.8.2-natives-osx.jar
lib/lwjgl-platform-2.8.2-natives-windows.jar

所以看来lwjgl已经被拉进去了。

我应该尝试哪些步骤来找出我出错的步骤?

谢谢!

4

4 回答 4

6

由于谷歌为我的类似问题找到了这篇文章,因此在此处删除了此注释。

Leiningen 的人现在已经解决了这个问题: https ://github.com/technomancy/leiningen/issues/898

如果您获得版本 2.1.0 或更高版本,则它具有修复程序。有关详细信息,请参阅错误。

更新:(2013 年 8 月)

我在 github 上有一个项目,我在这里用 lwjgl 进行实验: https ://github.com/rogerallen/hello_lwjgl

我也在我的shadertone项目中使用了LWJGL:https ://github.com/overtone/shadertone 因为Shadertone是一个库,我发现我需要自己打包natives才能让它为依赖的项目合理安装着色器。

如果有人对 LWJGL 人员有一些吸引力,那么如果他们只是将本地人放入适当的子目录中,就像 lein 在他们的 clojars 版本中所期望的那样,那肯定会很好。

于 2013-02-21T21:05:25.127 回答
4

看起来你的LD_LIBRARY_PATH. 您是否包含正确的文件.dll.so文件?

您可能需要在:native-dependencies [[lwjgl "2.8.2"]]您的project.clj.

或者,您可以尝试从 shell 设置正确的值:

export LD_LIBRARY_PATH=/home/username/lwjgl-2.8.2/native/linux/
于 2012-05-11T22:22:17.163 回答
1

Display尽管同一个 jar 文件中的其他类正确导入,但为什么拒绝导入有点令人困惑

(import '[org.lwjgl.opengl Util WindowsAWTGLCanvasPeerInfo])

我怀疑这个jar文件坏了,也许你可以试试不同的版本。

我尝试通过运行来调试它

cd lib
jar xf lwjgl-2.8.2.jar
cd org/lwjgl/opengl/

然后尝试加载我在那里看到的各种类。

lein swank还可以完成选项卡,这可以帮助探索类,而无需从 shell 中提取它们。

于 2012-05-11T22:15:24.503 回答
1

今天遇到了这个问题,通过将本机目录添加到:jvm-optsin来解决它有点不同project.clj

(defproject projectname "0.0.1-SNAPSHOT"
  :description "my project"
  :jvm-opts ["-Djava.library.path=native/linux"]
  :dependencies [[org.clojure/clojure "1.4.0"]])

我将 jar 文件从最新的 lwjgl 版本复制到lib并将native目录复制到项目根目录中。到目前为止似乎有效:

user=> (import org.lwjgl.opengl.Display)
org.lwjgl.opengl.Display

但我才刚刚开始。无论如何,希望这对其他人有帮助:)

于 2012-07-18T11:58:27.930 回答