为什么Java的抱怨命名空间是不是发现了什么?(Why does Java complain tha

2019-08-01 03:33发布

我试图建立在Windows 7避风港复制文件雷音构建环境从Linux上的成功构建环境。 我有Maven和与雷音一起安装JDK。

HOME点到c:\Users\cnorton在Maven的目录所在。

试图运行雷音REPL或雷音编译时,我得到这个错误,并不能找出我做错了。

java.lang.Exception的:由造成命名空间 'REPL-test.core' 装载 '/ repl_test /核心' 后未找到

这里是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,使该项目成为一个主要的标题。

Answer 1:

我会避免用“ - ”文件夹的名称和命名空间,它实际上是转换为“_”,但不是在所有地方。

以下可能会或可能不会为你工作。 我收到了你的框架项目的工作:

(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测试用下划线repl_test。

然后

 lein compile

 lein run

由于好奇,我也看着Clojure的,CSV ,和他们使用的是“ - ”无处不在,除了在文件夹名称,所以可能有运气复制他们做了什么。

此外,引用另一个SO问题上Clojure的命名空间:

“另外请注意,你不可以使用命名空间的名称下划线或文件名中的连字符和无论你在一个命名空间名称使用连字符,则必须在文件名中使用下划线(这样的NS my.cool项目定义在文件目录中名为cool_project.clj叫我)“。

而从Clojure的编程维基上的Java包款:“Clojure的尊重目录和文件的Java命名惯例,但Lisp的命名惯例命名空间名称,这样一个Clojure的命名空间com.my-app.utils将住在名为com / my_app应用的路径。 /utils.clj。尤其要注意下划线/连字符的区别“。



文章来源: Why does Java complain that namespace is not found?