在这里,我检查环境变量类路径
丹尼尔@daniel-laptop:〜/ps/clojure/projects/ring-tutorial $ echo $ classpath
/home/daniel/ps/clojure/projects/ring-tutorial/src

在这里,我检查Java认为是什么。
丹尼尔@daniel-laptop:〜/ps/clojure/projects/ring-tutorial $ lein plep
clojure 1.1.0用户=>(系统/getProperty“ java.class.path”)
“ src/:class/:/home/home/daniel/.m2/repository/leiningen/leingenen/leiningen/1.1.0/leinginen-1.1.0.0-standalone.jar.jar:lib/clojure-1.1.1.0.jar:lib/servlet-apipi -2.5-6.1.14.jar:lib/commons-io-1.4.4.jar:lib/clj-stacktrace-0.1.0.0.0.jar:lib/clojure-contrib-1.1.1.0.jar:lib/ring-devel-0.2 。 .jar:lib/ring-core-0.2.0.jar:lib/commons-fileupload-1.2.1.jar:lib/ring-servlet-0.2.0.jar:lib/commons-codec-1.4.jar:“

如您所见,这两个响应是完全不同的。我很确定,我必须误解我应该在哪里编辑java“获取”的classpath变量,除了我发现的所有内容都说这应该有效。那怎么办? Leiningen会产生自己的怪异叛徒实例吗?我是否编辑一个完全无关的变量?任何帮助都非常感谢。

有帮助吗?

解决方案

$CLASSPATH 确实是完全无关紧要的。就是什么 java-JVM-Launcher-Programme如果在命令行上没有提供类Path的信息; Leiningen为JVM提供了适合您正在从事的项目的类路径。

在这种特殊情况下, "/home/.../ring-tutorial/src" 对于RIND教程而言,它不会是非常有用的类路径,因为它仅包括环教程的源,并且不包括Clojure Jar(运行Clojure代码是必需的),Ring Jars(ring是一个多模块项目)或其他任何罐子环都取决于。莱宁根(Leiningen)生产的班级路径似乎很长,但是它的所有组件确实需要在那里。

顺便说一句,如果您只是从Clojure开始,我建议您坚持使用工具链的类Path管理设施(这可能意味着Emacs + lein swank 或某些IDE + clojure插件)如果可能的话。否则,此处的Clojure Class Path问题有很多问题,以及您可以使用该主题的许多其他资源,您可以使用...但是现在,该工具支持非常强大,并且您通常不会 需要 用手触摸班级路径,一开始最好避免痛苦。

其他提示

使用ClassPath变量来管理您的依赖性的问题是,所有Java和其他JVM语言都需要为其目的操纵它。不久之后您就在拐角处画了自己。

当您启动仅启动服务器的服务器时,它可以正常工作。它完全在Java开发人员的PC上崩溃了,Java开发人员拥有10个程序和项目都需要不同的依赖项,然后花更多的时间调试Bash脚本来操纵classPath变量编写源代码。

因此,这种管理类Path的方式已被废弃,更喜欢其他类上传技术,或者在使用ClassPath时,仅在本地使用它。

Clojure Class Path是Java Class Path。

$CLASSPATHjava 可执行者被调用 -cp 参数,Leiningen(以及大多数其他Clojure构建脚本)所做的。

如果您使用的是Leiningen之类的构建工具,则必须使用它来管理类路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top