为Clojure项目设置CLASSPATH

时间:2011-03-28 00:17:16

标签: clojure jvm classpath jvm-languages

我有一个简单的项目结构:

Base Dir
   src ;; Pile of Clojure files
   lib ;; Jar files

导出类路径: $ export CLASSPATH = $ CLASSPATH:src:lib / *

尝试运行Clojure文件: java -cp $ CLASSPATH -jar lib / clojure.jar src / wizard-game.clj
但我得到了:

  

线程“main”中的异常java.io.FileNotFoundException:找不到类路径上的clojure / contrib / trace_ init.class或clojure / contrib / trace.clj:
  引起:java.io.FileNotFoundException:找不到类路径上的clojure / contrib / trace
_init.class或clojure / contrib / trace.clj:

好的,这是一个类路径问题,但是我做错了什么/哪里?

有没有更好的方法来尝试运行它?

更新
我试过这个命令:

  

java -classpath $ CLASSPATH clojure.main src / wizard-game.clj

现在运行正常。

2 个答案:

答案 0 :(得分:7)

关于java选项的-jar手册页:

  

使用此选项时,JAR文件   是所有用户类的来源,和   其他用户类路径设置是   忽略。

所以这有点令人失望,但好消息是你可以通过使用不同的启动语法(referenced at clojure.org)解决这个问题:

java -cp $CLASSPATH clojure.main src/wizard-game.clj

或者,使用像Leiningen这样的工具来管理项目的类路径和依赖项!

答案 1 :(得分:3)

这是对你的“如何在Lein中运行独立的Clojure文件?”的回应。你应该看看lein run。我不确定目前的状态,但是有一个独立的Lein插件,现在默认情况下至少有一些(可能全部)功能构建到lein中。

尝试在命令行运行lein help run以便快速介绍。

独立的lein-run项目。文档可能有用。不是100%确定它是否与内置lein run匹配,但我从我自己的用法中知道它至少有一些。

https://github.com/sids/lein-run