質問: 既存のソースコードを実装したいのですが、project.cljの設定の仕方がわかりません。 実行したいスクリプトを example.clj とします。 (ns examples.core (:gen-class) ..... と書いてあったので、project.cljに main: examples.core を付け足したのですが lein run をするとエラーが出てしまいます。 ``` java.lang.Exception: Error loading project.clj Caused by: clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Invalid token: main:, compiling Caused by: java.lang.RuntimeException: Invalid token: main: ``` 環境 Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-63-generic x86_64) leiningen 2.7.1 on Java 1.8.0_121
回答: project.cljに記述するなら、main: examples.coreではなく、 `:main examples.core` ではないでしょうか? 実行したいスクリプトの詳細はわかりませんが、project.cljは通常のClojureのコードと同様に読み込まれます(解釈されます)。 defprojectマクロでは、 :キーワード <スペース> <何かしらのプロパティ> といった形でプロパティを設定します。 エラーメッセージで、 > > Caused by: clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Invalid token: main:, compiling > > > と出力されるのは、Clojureのコード(project.clj)を読み込んでいる途中で、不適切なシンボル(main:)が出てきたため、エラーが発生しているものと思われます。