我在项目上运行lein uberjar,它创建了相应的jar文件。当我运行jar时,会抛出ClassNotFoundException: explodingdots.core。我将explodingdot.core指定为我的主要课程。我解压缩了jar文件,并且相应目录中确实没有core.class。我忘记了什么?

我在src/explodingdots/core.clj中有以下代码

(ns explodingdots.core
(:import(java.awt Color Dimension Graphics2D AlphaComposite RenderingHints)
(java.awt.event ActionListener MouseAdapter WindowAdapter)
(javax.swing计时器JPanel JFrame)
(:gen-class))

[...]

(defn -init []爆炸点)
(defn -main [_]
(让[ed(ed(new explodingdots.core)]]
(.init ed)))


我的project.clj的内容是:

(defproject爆炸点“ 0.1”
:dependencies [[org.clojure / clojure“ 1.2.0”]
[org.clojure / clojure-contrib“ 1.2.0”]]
:main explodingdots.core)


注意:我正在使用leiningen 1.3.1

最佳答案

好吧,我解决了我原来的问题。承认它有点尴尬,但我认为为了确保此线程的完整性,我必须这样做。我迷路了。我在Netbeans项目和leiningen项目中都有相同的文件。我正在编辑Netbeans文件。抱歉。

但是后来我又遇到了另一个问题。找到了主要方法,但我得到了

java.lang.IllegalArgumentException:传递给:core $ -main的错误的args(0)数


我尝试将主要方法从
(defn -main [_] ...)(defn -main [& args] ...)像Arthur所建议的那样,但这没有用。为了解决这个问题,我只写了,没有args。

下一个问题是从(defn -main[]...)调用(init)会导致错误。通过完全不调用(main)而是直接从(init)调用(exploding-dots)来解决此问题。

因此,使一切正常工作,我的(main)看起来像

(ns explodingdots.core
(:import(java.awt Color Dimension Graphics2D AlphaComposite RenderingHints)
(java.awt.event ActionListener MouseAdapter WindowAdapter)
(javax.swing计时器JPanel JFrame)
(:gen-class))

[...]

(defn -main [](爆炸点))


通过查看我必须思考的解决方案,我为什么不将其写在前面。这是最简单,最直接的方法。也许我需要休假;)。

10-06 13:59
查看更多