已下载依赖项,但仍然无法要求,clojure
这让我很伤心。。。除了内置的本机DEP之外,我不需要其他任何东西。没有打嗝,没有http工具包等。。。即使我可以在已下载依赖项,但仍然无法要求,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 从
.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哈哈,我是说两个垂直对齐的点,对不起:)我会给你发一张我的终端的图片来证明,但不知道怎么做