«Лейна Бар» и «Лейна Убежар» не устанавливает правильно на главном классе
Вопрос
Я побежал lein uberjar
На моем проекте и создал соответствующие файлы JAR. Когда я бегу в банку ClassNotFoundException: explodingdots.core
брошен. Я указал explodingdot.core
как мой главный класс. Я извлек файл JAR и не было core.class
в соответствующем каталоге. Что я забыл?
У меня есть следующий код в src/explodingdots/core.clj
(NS ExploDingdots.core (: Import (java.awt цветной размер графики2d alphaacomposite renderinghints) (java.awt.event eactionlistener mouseadapter windadapter) (timer jpanel jpax.swing jpanel jframe)) (:: Defn -init [] взрывающиеся точки) (defn -main [_] (пусть ed (new inshodingdots.core)] (.init ed))))))
Содержание моего project.clj
является:
(DefProject Exprodingdots "0.1": Зависимости [[org.clojure / clojure "1.2.0"] [ORG.CLOJURE / CLOJURE-INVENTIGNAGE "1.2.0"]]: основные взрывыdots.Core)
Примечание: Я использую Leinhen 1.3.1
Решение
Хорошо, я решил свою первоначальную проблему. Это своего рода помараживание, чтобы признать его, но я думаю, что должен сделать это ради полноты этой темы. Я перепутал своими путями. У меня один и тот же файл в проекте NetBeans и в проекте Лейнингена. И я редактировал файл NetBeans. Извиняюсь.
Но тогда у меня была другая проблема. Основной метод найден, но я получаю
java.lang.illegalargumentException: неправильное количество args (0) передано: CORE $ -Main
Я пытался изменить свой основной метод от(defn -main [_] ...)
к (defn -main [& args] ...)
Как предложил Артур, но это не сработало. Решить это, я написал только (defn -main[]...)
без args.
Следующая проблема заключалась в том, что звонит (init)
от (main)
привело к ошибке. Я работал вокруг этого, не звонив (init)
вообще, кроме звонка (exploding-dots)
непосредственно от (main)
.
Так что заставить все работать мой src/explodingdots/core.clj
выглядит как
(NS ExploDingdots.core (: Import (java.awt цветной размер графики2d alphaacomposite renderinghints) (java.awt.event eactionlistener mouseadapter windadapter) (timer jpanel jpax.swing jpanel jframe)) (:: Defn -main [] (взрывающие точки))
Глядя на решение, я должен думать, почему я не пишу это прямо вперед. Это самый простой и самый прямой путь. Может быть, мне нужен отдых;).
Другие советы
Мне пришлось добавить третий компонент к моему главному пространству имени и переместить все в подкаталог COM под SRC.
com.explodingdots.core
Я также объявляю Главным вектором Arg Arg, не уверен, что это делает различий:
(declare main)
(defn -main [& args]