gpt4 book ai didi

java - NoClassDefFoundError 从 Java(Android、LibGDX)调用 Clojure

转载 作者:行者123 更新时间:2023-11-30 03:12:04 26 4
gpt4 key购买 nike

我关注了this tutorial使用 Leiningen 在 Eclipse 中从 Java 调用 Clojure。我想在 Clojure 中编写游戏的 AI 代码,然后在适用于 Android 操作系统的 LibGDX 中完成其余部分。

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

我添加 jar 文件,右键单击项目 > 属性 > Java 构建路径 > 库 > 添加外部 JAR... > myai-0.1.0-SNAPSHOT-standalone.jar。 p>

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

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

(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)

core.clj

(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)))
)

提前致谢! :)

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

最佳答案

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

关于java - NoClassDefFoundError 从 Java(Android、LibGDX)调用 Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20778022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com