4

プロジェクトを実行lein uberjarすると、対応する jar ファイルが作成されました。jar を実行すると aClassNotFoundException: explodingdots.coreがスローされます。explodingdot.coreメインクラスとして指定しました。core.classjarファイルを抽出しましたが、対応するディレクトリには実際にはありませんでした。私は何を忘れましたか?

私は次のコードを持っています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[] 爆発ドット)
(定義-メイン[_]
  (let [ed (新しい 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 を使用しています

4

3 に答える 3

5

わかりました、元の問題を解決しました。認めるのはちょっと恥ずかしいですが、このスレッドの完全性のためにそうしなければならないと思います. 道に迷いました。Netbeans プロジェクトと leiningen プロジェクトに同じファイルがあります。そして、Netbeans ファイルを編集していました。ごめん。

しかし、その後、別の問題が発生しました。主な方法は見つかりましたが、

java.lang.IllegalArgumentException: 間違った数の引数 (0) が渡されました: core$-main

主な方法をアーサーが提案したように変更しようとし (defn -main [_] ...)まし(defn -main [& args] ...)たが、うまくいきませんでした。(defn -main[]...)これを解決するために、引数なしで書きました。

(init)次の問題は、 fromを呼び出すと(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 タイマー JPanel JFrame))
  (:gen-class))

[ ... ]

(defn -main[] (爆発ドット))

私が考えなければならない解決策を見て、なぜそれをすぐに書かなかったのですか。それは最も単純で最も簡単な方法です。多分私は休暇が必要です;)。

于 2010-09-10T07:39:40.413 に答える
2

メインの名前空間に 3 番目のコンポーネントを追加し、すべてを src の下の com サブディレクトリに移動する必要がありました。

com.explodingdots.core

また、引数ベクトルを取るように main を宣言しますが、それが違いを生むかどうかはわかりません。

(declare main) 
(defn -main [& args]    
于 2010-09-09T17:47:46.147 に答える