Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoClassDefFoundError从Java(Android,LibGDX)调用Clojure_Java_Android_Clojure_Libgdx_Clojure Java Interop - Fatal编程技术网

NoClassDefFoundError从Java(Android,LibGDX)调用Clojure

NoClassDefFoundError从Java(Android,LibGDX)调用Clojure,java,android,clojure,libgdx,clojure-java-interop,Java,Android,Clojure,Libgdx,Clojure Java Interop,我随后使用Leiningen从Eclipse中的Java调用Clojure。我想在Clojure中编写游戏的AI,其余的则在Android操作系统的LibGDX中编写 完成Clojure端后,我使用lein命令将其打包到jar文件中(#lein compile,#lein run,#lein uberjar) 我右键单击项目>属性>Java构建路径>库>添加外部jar…>myai-0.1.0-SNAPSHOT-standalone.jar 我的问题发生在我执行游戏时 import myai.*;

我随后使用Leiningen从Eclipse中的Java调用Clojure。我想在Clojure中编写游戏的AI,其余的则在Android操作系统的LibGDX中编写

完成Clojure端后,我使用lein命令将其打包到jar文件中(#lein compile,#lein run,#lein uberjar)

我右键单击项目>属性>Java构建路径>库>添加外部jar…>myai-0.1.0-SNAPSHOT-standalone.jar

我的问题发生在我执行游戏时

import myai.*;
public class Stack extends Actor {
   ...
   public void draw(SpriteBatch batch, float parentAlpha) {
      System.out.println("Binomial = " + core.binomial(5, 15));
   }
   ...
}
我收到这个错误:

12-26 00:27:01.570: I/dalvikvm(8384): Could not find method myai.core.binomial, referenced from method my.package.Stack.draw
12-26 00:27:01.570: E/AndroidRuntime(2281): FATAL EXCEPTION: GLThread
12-26 00:27:01.570: E/AndroidRuntime(2281): java.lang.NoClassDefFoundError: myai.core
12-26 00:27:01.570: E/AndroidRuntime(2281):     at my.package.Stack.draw(Stack.java:297)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at my.package.GameScreen.render(GameScreen.java:146)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at com.badlogic.gdx.Game.render(Game.java:46)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at my.package.MyGame.render(MyGame.java:23)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:487)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at com.badlogic.gdx.backends.android.surfaceview.GLSurfaceViewCupcake$GLThread.guardedRun(GLSurfaceViewCupcake.java:713)
12-26 00:27:01.570: E/AndroidRuntime(2281):     at com.badlogic.gdx.backends.android.surfaceview.GLSurfaceViewCupcake$GLThread.run(GLSurfaceViewCupcake.java:646)
我真的不知道为什么会这样,因为我已经遵循了教程中的所有步骤

这些是我的clojure文件:

project.clj

core.clj

提前感谢!:)


编辑:在Ubuntu中使用命令行命令也不起作用。

多么愚蠢的错误。。。我忘记在Properties>JavaBuildPath>Order and Export选项卡中检查Clojure.jar文件,因此在编译时它没有添加到类路径中

(defproject myai "0.1.0-SNAPSHOT"
  :description "AI for my game"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]]
  :aot [myai.core]
  :main myai.core)
(ns myai.core
  (:gen-class
    :name myai.core
    :methods [#^{:static true} [binomial [int int] double]])
  )

(defn binomial
  "Calculate the binomial coefficient."
  [n k]
  (let [a (inc n)]
    (loop [b 1
           c 1]
      (if (> b k)
        c
        (recur (inc b) (* (/ (- a b) b) c))))))

(defn -binomial
  "A Java-callable wrapper around the 'binomial' function."
  [n k]
  (binomial n k))

(defn -main
  [& args]
  (println "My Game Artificial Intelligence")
  (println (str "(binomial 5 3): " (binomial 5 3)))
  )