6

Linuxで成功したビルド環境からファイルをコピーしたWindows7でleinビルド環境をセットアップしようとしています。私はmavenとjdkをleinと一緒にインストールしています。

c:\Users\cnortonHOMEは、Mavenディレクトリが配置されている場所を指します。

leinreplまたはleincompileを実行しようとするとこのエラーが発生し、何が間違っているのか理解できません。

原因:java.lang.Exception:名前空間'repl-test.core'がロード後に見つかりません'/ repl_test /core'

これがproject.cljです

(defproject repl-test "0.0.1-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [clojure-csv/clojure-csv "1.2.4"]
                 [org.clojure/tools.cli "0.1.0"]
                 [clj-http "0.1.3"]]
   :aot [repl-test.core]
   :main repl-test.core)

これがsrc/repl_test/core.cljの最初の部分です

(ns repl-test.core
  (:gen-class)
  (:use clojure.contrib.command-line)
  (:require [clojure.contrib.string :as cstr])
  (:require [clojure.contrib.trace :as ctr])
  (:require [clojure.string :as sstr])
  (:use clojure-csv.core))

誰かが答えとしてproject.cljと、プロジェクトをメインにすることができるcore.cljのヘッダーを投稿できれば非常に役立ちます。

4

1 に答える 1

7

フォルダー名と名前空間に「-」を使用しないでください。実際には「_」に変換されますが、すべての場所では変換されません。

以下はあなたのために働くかもしれないし、働かないかもしれません。私はあなたのスケルトンプロジェクトを次のように動作させました:

(defproject st1 "1.0.0-SNAPSHOT"
:description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [clojure-csv/clojure-csv "1.2.4"]
                 [org.clojure/tools.cli "0.1.0"]
                 [clj-http "0.1.3"]]
                 :aot [repl_test.core]
                 :main repl_test.core)

あなたが持っているのと同じcljファイル:

 (ns repl_test.core
  (:gen-class)
  (:use clojure.contrib.command-line)
  (:require [clojure.contrib.string :as cstr])
  (:require [clojure.contrib.trace :as ctr])
  (:require [clojure.string :as sstr])
  (:use clojure-csv.core))

そして、フォルダーrepl-testの名前をアンダースコア付きのrepl_testに変更しました。

それで

 lein compile

 lein run

好奇心でclojure-csvも調べたところ、フォルダー名を除いてどこでも「-」が使用されているため、彼らが行ったことをコピーできた可能性があります。

また、clojure 名前空間に関する別の SO の質問を引用します。

「また、名前空間名にアンダースコアを使用したり、ファイル名にハイフンを使用したりしないでください。また、名前空間名にハイフンを使用する場合は常に、ファイル名にアンダースコアを使用する必要があります (ns my.cool-project が定義されるように) my) という名前のディレクトリにある cool_project.clj という名前のファイルで」

また、Clojure プログラミング WikiのJava パッケージに関するセクションから: /utils.clj。特にアンダースコアとハイフンの区別に注意してください。"

于 2012-10-04T05:34:07.220 に答える