Deploying Clojure apps with Leiningen

2019-03-12 11:58发布

问题:

This is my project.clj file so far:

(defproject raj "0.0.1-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]]
  :keep-non-project-classes true
  :main raj.core)

And my core.clj file:

(ns raj.core
  (:use raj.core))

(defn -main [& args]
  (println "Hello World!!!"))

lein run -m raj.core displays the Hello World message just fine. So next I try lein uberjar and get

Compiling raj.core
Compilation succeeded.
Created C:\Users\bobjones\IdeaProjects\raj/raj-0.0.1-SNAPSHOT.jar
Including raj-0.0.1-SNAPSHOT.jar
Including clojure-1.3.0.jar
Created C:\Users\bobjones\IdeaProjects\raj/raj-0.0.1-SNAPSHOT-standalone.jar

Everything seems to be going well so far, so I try java -jar raj-0.0.1-SNAPSHOT-standalone.jar, and I receive

Error: Could not find or load main class raj.core

What would I be doing wrong here?

回答1:

You need to add a :gen-class declaration to the raj.core namespace:

(ns raj.core
  (:use raj.core)
  (:gen-class))