我在项目上运行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 [](爆炸点))
通过查看我必须思考的解决方案,我为什么不将其写在前面。这是最简单,最直接的方法。也许我需要休假;)。