'lein jar'和'lein uberjar'没有正确设置大班

Kin*_*aro 4 jar clojure leiningen

我跑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 Timer JPanel JFrame))
  (:gen-class))

[ ... ]

(defn -init[] exploding-dots)
(defn -main[_]
  (let [ed (new explodingdots.core)]
    (.init ed)))

我的内容project.clj是:

(defproject explodingdots "0.1"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :main explodingdots.core)

注意:我正在使用leiningen 1.3.1

Kin*_*aro 5

好的我解决了原来的问题.承认它有点令人尴尬,但我想我必须为了这个线程的完整性而这样做.我和我的路径混在一起.我在Netbeans项目和leiningen项目中拥有相同的文件.我正在编辑Netbeans文件.抱歉.

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

java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$-main

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

接下来的问题是,调用(init)(main)导致错误.我通过不(init)打电话(exploding-dots)直接打电话来解决这个问题(main).

所以要让一切都src/explodingdots/core.clj运转起来

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

[ ... ]

(defn -main[] (exploding-dots))

通过查看我必须考虑的解决方案,为什么我没有在前面写出来.这是最简单,最直接的方式.也许我需要度假;).