clojure - 为 Clojure 项目设置 CLASSPATH

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

Exception in thread "main" java.io.FileNotFoundException: Could not locate clojure/contrib/trace_init.class or clojure/contrib/trace.clj on classpath:
Caused by: java.io.FileNotFoundException: Could not locate clojure/contrib/trace
_init.class or clojure/contrib/trace.clj on classpath:

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

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

更新:
我试过这个命令:

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

现在运行正常。

最佳答案

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

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

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

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

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

关于clojure - 为 Clojure 项目设置 CLASSPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453462/

相关文章:

Clojure:为什么 (into {} '( (1 2) (3 4))) 失败?

clojure - 如何在 Clojure 中将二进制文件的内容读入字符串?

tomcat - 一个jvm中的servlet如何与另一个jvm中的servlet通信

java - _JAVA_OPTIONS 和 CLASSPATH 组合

eclipse - 在运行配置 VM 参数中访问 eclipse 类路径变量 M2_REPO 的值

Clojure 盒 : Problem with classpath (noob question)

clojure - 如何在使用 enlive 时重新加载模板而不重新启动

java - 强制 JVM 释放内存

java - 可能需要自定义类加载器的场景?

java - 找不到 org.json.JSONObject