2

clojars でlibgdxパッケージを使用しようとしている Clojure プロジェクトにleinを使用しています。そのパッケージからインストールされる jar ファイルには、gdx 用の複数の jar を含む lib フォルダーが含まれています。

$ 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"]

私が確信していないのは、libgdx jar 内の各 jar に :use および :require キーワードを使用してアクセスする方法です。

(ns game.core
  (:import (libgdx.gdx Game)) <- does not work

lein プロジェクトのパブリック リポジトリを github に作成しました: Project Link

プロジェクトを更新して、解決したら他の人の例として機能するようにします。

4

2 に答える 2

0

clojars のファイルはクラスを含む通常の jar ファイルではなく、ダウンロードして必要な jar を抽出し、プロジェクトのクラスパスまたは lib に配置することを意図したファイルであるため、uberjar は機能しません。

それを行うために派手なクラスローダーを作成することもできますが、それは次の命令を含むlibgdx サイトの命令に反します。

 Download the nightly zip and place gdx.jar and gdx-sources.jar in the libs folder.

より適切な方法は、そのダウンロード jar から jar を抽出し、それらを clojars に追加して個別に参照することです。それか、それらをローカルのクラスパスまたはレポに追加するだけです。

于 2012-09-21T01:53:03.983 に答える
0

考えただけですが、彼らがそのようにパッケージ化した場合、おそらく彼らは正しいことをする派手なクラスローダーをすでに提供しているでしょうか?

また、あなたのインポートは私には正しく見えません。ベクトル(リストではない)は正しいですか?

例えば

(ns warscore.swing
  (:import
   [java.awt Color ]
   [java.awt.event MouseEvent]
   [javax.swing DefaultCellEditor JCheckBox JLabel JTable JTextField ]
   [javax.swing.table DefaultTableCellRenderer ]))
于 2012-09-21T04:19:34.033 に答える