在Leiningen/Clojure中使用lwjgl

use*_*359 9 clojure

(1) (println (. System getProperty "java.library.path"))
Run Code Online (Sandbox Code Playgroud)

这给了我一个java寻找原生扩展的地方列表.

然后,我使用了lwjgl原生扩展,并将它们放在那里.

对我不起作用的事情(可能是因为我错误地使用了它们)

(*) setting :native-path
(*) setting :native-dependencies
Run Code Online (Sandbox Code Playgroud)

问题

我的设置:

(lein deps; echo "====="; cat project.clj; echo "====="; cat src/main.clj; echo "====="; lein repl) &> log
Run Code Online (Sandbox Code Playgroud)

"日志"的内容

    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=> 
Run Code Online (Sandbox Code Playgroud)

注意 - 我已经完成了"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?
Run Code Online (Sandbox Code Playgroud)

$ find lib

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
Run Code Online (Sandbox Code Playgroud)

所以看来lwjgl已被拉入.

我应该尝试找出哪个步骤出错了?

谢谢!

Rog*_*len 6

自从谷歌发现这篇文章以来我的类似问题之后,请放弃此说明.

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

如果您获得版本2.1.0或更高版本,它有修复.有关详细信息,请参阅bug.

更新:(2013年8月)

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

我也在我的shadowrtone项目中使用LWJGL:https://github.com/overtone/shadertone 因为Shadertone是一个库,我发现我需要自己打包本机,以便合理安装依赖于它的项目shadertone.

如果有人对LWJGL人员有所了解,那么如果他们只是将本机放入适当的子目录中,就像lein期望在他们的clojars版本中那样,那肯定会很好.

  • 谢谢.使用lein 2.3.1我设法让以下工作(不需要:jvm-opts): - :dependencies [[org.clojure/clojure"1.4.0"] [org.lwjgl.lwjgl/lwjgl"2.9. 0"] [org.lwjgl.lwjgl/lwjgl-platform"2.9.0":分类器"natives-osx":native-prefix""]] (2认同)

dby*_*rne 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/
Run Code Online (Sandbox Code Playgroud)