已下载依赖项,但仍然无法要求,clojure

已下载依赖项,但仍然无法要求,clojure,clojure,dependencies,classpath,leiningen,Clojure,Dependencies,Classpath,Leiningen,这让我很伤心。。。除了内置的本机DEP之外,我不需要其他任何东西。没有打嗝,没有http工具包等。。。即使我可以在.m2/repository lein新的myapp 将[markdown clj 0.9.91]添加到project.clj 添加(ns metapp.core (:require[markdown clj:as mark])) lein run 从clojars检索markdown clj/markdown clj/0.9.91/markdown-clj-0.9.91.pom 从

这让我很伤心。。。除了内置的本机DEP之外,我不需要其他任何东西。没有打嗝,没有http工具包等。。。即使我可以在
.m2/repository

lein新的myapp

[markdown clj 0.9.91]
添加到project.clj

添加
(ns metapp.core
(:require[markdown clj:as mark]))

lein run

从clojars检索markdown clj/markdown clj/0.9.91/markdown-clj-0.9.91.pom
从clojars检索markdown-clj/markdown-clj/0.9.91/markdown-clj-0.9.91.jar
线程“main”java.io.FileNotFoundException中出现异常:在类路径上找不到quote/markdown\u clj\u init.class或quote/markdown\u clj.clj。请检查带破折号的命名空间是否在Clojure文件名中使用下划线。,

lein deps
没有返回任何内容

有人知道怎么回事吗?这个stacktrace不是很有用,所以Lein可以获取DEP,但不知道如何要求它们

编辑:运行LinuxMint18.0,clojure位于
/home/denis/clojure-1.8.0
中,别名为
java-cp/home/denis/clojure-1.8.0/clojure-1.8.0.jar clojure.main
。myapp中的目录树是
/home/denis/prg/cljr/myapp

解决方案: 谢谢你,伙计,但现在我觉得自己像个白痴。 因此,在project.clj中,为未来的参与者总结一下,要求依赖项“X”并不意味着你应该“要求”它为“X”。您必须按照作者在文档中指定的方式进行要求,例如project.clj中的
[http kit“2.2.0”]
要求如下

(ns metapp.core(:require[org.httpkit.client:as http])

其次,您在代码中要求的方式与在REPL中要求的方式不同,例如,这在yourapp.core
(require[stuff.core as stuff])
。您也可以这样编写它,它也可以
(ns yourns(:require[stuff.core:as stuff])
。但是这个合成器不起作用:
(:require[stuff.core:as stuff])

然而,在REPL中,情况就不同了!如果它是一个添加的依赖项,我必须使用
(:require'[stuff.core])
,如果它是一个内置库,则必须使用
(:require'clojure.string)
。请注意类似
(require'[http.async.core]的内容)
不起作用,因为它不是内置的。因此,如果你检查了只显示内置示例的文档(如我),你就完蛋了。
同样对于像clojure.string这样的内置库,您可以简单地使用
(需要'clojure.string)
,是的,它不适用于依赖项。祝大家玩得开心!Loooong旅程即将开始,clojure是迄今为止我唯一需要花4天时间弄清楚如何导入模块的语言(poke Python,只花了30秒),希望它值得!

您应该需要该项目的文档中的
markdown.core

(ns foo
  (:use markdown.core))
就你而言:

(ns metapp.core
  (:require [markdown.core :as mark]))
应该有用


没有意识到库的名称和组成库的名称空间是不同的,这很容易被绊倒。

markdown clj
只是一个包的名称。但是当你
需要什么时,你需要指定一个模块,而不是包。大多数包都有
核心模块,以便正确使用:


(:require[markdown-clj.core:as mark])

谢谢你,这项工作。我不知道为什么我会认为“如果我导入X,那么我应该需要X”。嗯,实际上仍然有问题。我仍然无法(require[whatever.core])在我的项目中的repl会话期间…AFAIK require总是有一个:as,这在您的示例中是缺失的。所有这些不同类型的导入都有点令人沮丧,我同意。就个人而言,我在repl上不做太多导入,尽管我确实使用过它。另请参见。我刚刚又尝试了一次,并且我保留了我说过的:分号当我需要一个非内置库时是必需的。否则我会有一个
FileNotFoundException..not on clapath
exception哈哈,我是说两个垂直对齐的点,对不起:)我会给你发一张我的终端的图片来证明,但不知道怎么做