我正在将 lein 用于 Clojure 项目,我正在尝试使用 libgdx包装在 clojars .从该包安装的 jar 文件包含一个 lib 文件夹,其中包含多个用于 gdx 的 jar。
$ jar tf org/clojars/amu/libgdx/0.92/libgdx-0.9.2.jar
lib/
lib/gdx-openal.jar
lib/gdx-backend-jogl-natives.jar
lib/gdx-backend-android.jar
lib/gdx-backend-lwjgl.jar
lib/gdx-backend-lwjgl-natives.jar
lib/gdx.jar
lib/gdx-natives.jar
lib/gdx-backend-jogl.jar
我还在我的 project.clj 中添加了以下依赖项:[org.clojars.amu/libgdx "0.9.2"]
我不确定的是如何使用 :use 和 :require 关键字访问 libgdx jar 中的每个 jar?
(ns game.core
(:import (libgdx.gdx Game)) <- does not work
我已经在 github 上为 lein 项目建立了一个公共(public)存储库:Project Link
我会更新项目,以便在我解决问题后可以作为其他人的示例。
最佳答案
uberjar 将无法工作,因为 clojars 中的文件不是包含类的普通 jar 文件,而是一个真正的文件,您需要下载、提取必要的 jar 并将它们放在项目的类路径或 lib 中.
虽然你可以编写一个花哨的类加载器来做到这一点,但这与 instructions from the libgdx site 背道而驰。其中包括指令:
Download the nightly zip and place gdx.jar and gdx-sources.jar in the libs folder.
更合适的做法是从下载的 jar 中提取 jar 并将它们添加到 clojars 并单独引用它们。或者只是将它们添加到您的本地类路径或存储库中。
关于java - 如何在 clojure 中访问一 jar jar ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907340/