Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包括clojure的罐子_Java_Jar_Clojure_Classpath - Fatal编程技术网

Java 包括clojure的罐子

Java 包括clojure的罐子,java,jar,clojure,classpath,Java,Jar,Clojure,Classpath,我已经下载并安装了一个带有Maven的jar(正如所回答的),但是现在我需要在项目中使用它。我按照((require'[clj-http.client:as client])上的说明进行操作,但仍然出现以下错误: FileNotFoundException Could not locate clj_http/client__init.class or clj_http/client.clj on classpath: clojure.lang.RT.load (RT.java:430) 在

我已经下载并安装了一个带有Maven的jar(正如所回答的),但是现在我需要在项目中使用它。我按照(
(require'[clj-http.client:as client])
上的说明进行操作,但仍然出现以下错误:

FileNotFoundException Could not locate clj_http/client__init.class or clj_http/client.clj on classpath:   clojure.lang.RT.load (RT.java:430)

在启动clojure repl之前,将clj-http.jar添加到类路径或CP。

启动java进程时,需要执行以下操作:

java -cp ./lib/clj-http.jar ./lib/clojure.jar clojure.main
基本上,您需要clojure.jar(REPL所在的位置)和类路径中的clj-http.jar


假设clj-http.jar位于./lib/目录中。或者你可以用lein(构建工具,类似于maven)构建你的项目,让它构建一个uberjar,这就是我要做的。这里有一个关于设置lein和构建uberjar的非常好的演练:

这个帖子上的其他答案肯定会有用。。。。但是直接在机器的类路径或命令行中添加JAR可能是一个非常困难的开发策略

在clojure应用程序中包含JAR最常见、最惯用的方法是(在github上简单、一步安装——乞丐们应该查看此答案末尾的注释,以获取警告)。。。Leiningen还可以安装clojure环境并为您启动repl,并预装正确的jar环境。

它本质上是一个java依赖项管理器和构建工具,集成在一起,比如ivy或我们用于java开发的maven Pom.xml

关于如何使用Leiningen以简单且可扩展的方式与多个LIB交互的几个示例:

要启动repl,以便project.clj文件中的JAR位于类路径上,请执行以下操作:

lein repl
要更新project.clj指定的maven repo中的JAR,请执行以下操作:

lein deps
最后,lein让我们导出类似于“fatjars”的“uberjars”,即它们为您捆绑了所有依赖项

关于新Lein版本的小更新:begginers注意事项。

您可以运行两个脚本来安装Leiningan,运行此脚本可能更安全:

稳定释放)

而不是这个:


(最新更新是预览版)

我查找了
addclasspath
,发现它已被弃用。如何将jar添加到类路径中?因此,每当添加依赖项时,我都必须构建uberjar?我在~/.clojure创建了一个文件夹,我将在那里转储我所有的jar。我尝试了
java-cp~/.clojure/clj-http-0.4.1.jar clojure.main
,但没有成功。它不喜欢最后一部分chris:my clojure bash script for you ref:所以每次我想运行REPL时,我都必须向类路径添加东西?听起来。。。如果您使用lein并运行
lein repl
,它将使用project.clj文件中设置的任何依赖项运行repl。或者您可以编写自己的启动程序脚本,将
/lib
中的任何内容添加到已启动java进程的类路径中。但最终它只是java。因此,是的,您确实需要以某种方式在类路径中设置依赖项。另一个选项是设置类路径环境变量,但每次打开新shell时都需要这样做。这更多的是一种内容更改,而不是我愿意不经讨论就对其他人的帖子所做的更改——但是,在这里,粗体字确实大大降低了可读性。去掉第一段,去掉第二段,可能会得到更清晰的答案。