2

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

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
但我得到了:

线程“主”java.io.FileNotFoundException 中的异常:无法在类路径上找到 clojure/contrib/ trace_init.class 或 clojure/contrib/trace.clj:
原因:java.io.FileNotFoundException:找不到 clojure/contrib/在类路径上跟踪
_init.class 或 clojure/contrib/trace.clj:

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

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

更新:
我试过这个命令:

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

现在运行正常。

4

2 回答 2

7

从有关该选项的java手册页中:-jar

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

所以这有点令人沮丧,但好消息是您可以通过使用不同的启动语法(在 clojure.org 引用)来解决这个问题:

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

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

于 2011-03-28T00:55:37.507 回答
3

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

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

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

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

于 2011-03-28T04:24:41.023 回答