java - 如何在 clojure 中访问一 jar jar ?

标签 java jar clojure libgdx

我正在将 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/

相关文章:

java - Spring Hibernate Integration jar 真正需要什么

java - Bouncy CaSTLe 与带有 OAEP 的 Java 默认 RSA

java方法.invoke() : how to check if valid jar is specified?

java - jar 没有运行

clojure - clojure 中惯用的惰性原子

java - 使用 Java 12 和 Gradle 进行测试不起作用

java - 重用库定义的异常

java - 文件写入jar中的资源文件夹中

clojure - 如何检索位于 HashMap 值列表的第一个位置的字符串

clojure - 在 Datomic 中,如何获得对特定实体的值所做更改的时间线 View ?