【问题标题】:'lein jar' and 'lein uberjar' not setting the main-class properly'lein jar' 和 'lein uberjar' 没有正确设置主类
【发布时间】:2011-04-10 07:03:25
【问题描述】:

我在我的项目上运行了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[] 爆炸点)
(定义-main[_]
  (让 [ed(新的 explodingdots.core)]
    (.init 编辑)))

project.clj的内容是:

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

注意:我使用的是 leiningen 1.3.1

【问题讨论】:

  • 尝试将选项 :main true :prefix "-" 添加到 gen-class 表单中。
  • 我很确定他不应该这样做。
  • 事实上,我通过removing :main true 修复了一个看起来非常相似的问题

标签: jar clojure leiningen


【解决方案1】:

我遇到了这个问题,并通过添加来修复它

:gen-class 对应的缺失类。

【讨论】:

    【解决方案2】:

    好的,我解决了我原来的问题。承认这一点有点尴尬,但我认为为了这个线程的完整性,我必须这样做。我与我的路径混淆了。我在 Netbeans 项目和 leiningen 项目中有相同的文件。我正在编辑 Netbeans 文件。对不起。

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

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

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

    下一个问题是从(main) 调用(init) 导致错误。我通过不调用(init) 而是直接从(main) 调用(exploding-dots) 来解决这个问题。

    所以为了让一切正常,我的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[] (爆炸点))

    通过查看解决方案,我不得不思考,为什么我不提前写出来。这是最简单、最直接的方式。也许我需要一个假期;)。

    【讨论】:

    • 我也遇到了需要无参数 main 方法的问题,谢谢!
    【解决方案3】:

    我必须在我的主名称空间中添加第三个组件,并将所有内容移到 src 下的 com 子目录中。

    com.explodingdots.core
    

    我还声明 main 采用 arg 向量,不确定这是否有区别:

    (declare main) 
    (defn -main [& args]    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2011-03-24
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      相关资源
      最近更新 更多