Pregunta

Me corrió lein uberjar en mi proyecto y creó los archivos JAR correspondientes. Cuando ejecuto el frasco se lanza un ClassNotFoundException: explodingdots.core. He especificado explodingdot.core como mi clase principal. Extraje el archivo jar y no había hecho ninguna core.class en el directorio correspondiente. Lo que se me olvidó?

Tengo el siguiente código en 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)))

El contenido de mi project.clj es:

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

Nota: Estoy utilizando Leiningen 1.3.1

¿Fue útil?

Solución

autorización I resuelto mi problema original. Es un poco embarazoso admitirlo, pero creo que tengo que hacerlo por el bien de la integridad de este hilo. Me levanté mezclado con mis caminos. Tengo el mismo archivo dentro de un proyecto de Netbeans y en un proyecto de Leiningen. Y yo estaba editando el archivo de Netbeans. Lo sentimos.

Pero entonces yo tenía otro problema. El método principal se encuentra, pero aparece un

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

He intentado cambiar mi método principal de (defn -main [_] ...) a (defn -main [& args] ...) como Arthur sugirió, pero que no funcionó. Para resolver este escribí simplemente (defn -main[]...) sin argumentos.

El siguiente problema fue que llamar (init) de (main) dio lugar a un error. He trabajado en torno a que al no presentarse (init) en absoluto, sino llamar directamente desde (exploding-dots) (main).

Así que para que todo funcione como mi aspecto 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))

Al mirar a la solución que tengo que pensar, ¿por qué no me escriben que por delante derecha. Es el más simple y más manera directa. Tal vez necesito unas vacaciones;)

.

Otros consejos

he tenido que añadir un tercer componente que mi principal espacio de nombre y mover todo en el subdirectorio com bajo src.

com.explodingdots.core

También declaro principal para tomar un vector de arg, no está seguro de si eso hace la diference:

(declare main) 
(defn -main [& args]    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top