11

私はClojureを初めて使用しますが、自分の書き方がよくわからないため、とproject.cljの両方で機能しlein replますlein run。ここにあります(全パス:) ~/my-project/project.clj

(defproject my-project "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]]
  :main my-project.core/hello
)

それから私は私の~/my-project/src/my_project/core.cljファイルを持っています

(ns my-project.core)

(defn hello []
  (println "Hello world!")
)

lein run正常に動作しますがFileNotFoundException、実行するとが発生しますlein repl

~/my-project$ lein run
Hello world!
~/my-project$ lein repl
REPL started; server listening on localhost port 42144
FileNotFoundException Could not locate hello__init.class or hello.clj on classpath:   clojure.lang.RT.load (RT.java:430)
clojure.core=>

project.cljこれを解決するには、をどのように編集すればよいですか?またはlein repl、別の方法で電話をかける必要がありますか?

前もって感謝します。

編集lein dep: sとで試しましlein compileたが、それでも同じエラー

~/my-project$ lein version
Leiningen 1.7.1 on Java 1.6.0_27 OpenJDK Client VM
~/my-project$ lein deps
Copying 1 file to /home/yasin/Programming/Clojure/my-project/lib
~/my-project$ lein compile
No namespaces to :aot compile listed in project.clj.
~/my-project$ lein repl
REPL started; server listening on localhost port 41945
FileNotFoundException Could not locate hello__init.class or hello.clj on classpath:   clojure.lang.RT.load (RT.java:430)
4

1 に答える 1

18

それを機能させるためにできることの1つは、次のように変更core.cljすることです。

(ns my-project.core
  (:gen-class))

(defn hello []
  (println "Hello world!"))

(defn -main []
  (hello))

そして、次のように編集project.cljします。

(defproject my-project "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]]
  :main my-project.core)

(:gen-class)、名前空間のJavaクラスを生成するようにコンパイラに指示し、の:mainディレクティブは、で指定されたクラスでmainメソッドを実行するようにproject.clj指示します。なぜ見つけられなかったのかは私にはわかりませんが、ライニンゲンの内部についてはよくわかりません。lein run-mainlein replmy-project.core/hello

于 2013-03-11T13:40:38.300 に答える