在Clojure REPL中使用自定义Java类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Clojure REPL中使用自定义Java类相关的知识,希望对你有一定的参考价值。
在Eclipse中,使用CCW插件,我想将clojure文件加载到REPL中。问题是我有一个我自己的java类的import语句,但显然它不在我的类路径中。
(ns my-clj-ns
(:import [alg.gen Enumerator]))
我是否需要在Clojure REPL中使用/测试的每个类中制作罐子?
目前,尝试将我的clj加载到REPL会导致错误:“在Clojure REPL中加载文件”未正常完成。有关更多信息,请参阅日志。显示java.lang.NullPointerException
任何帮助将不胜感激。
你的代码看起来很好。
我怀疑问题出在您的Eclipse Java Build Path上,它决定了Eclipse在应用程序的类路径中包含的内容。
特别是,如果您的Java类位于单独的项目中,则需要将该项目添加到构建路径(右键单击项目/属性/ Java构建路径/项目)或将其打包为jar。
当你开始有更复杂的构建要求时,你可能还想开始查看Maven来为你处理这类事情。 Maven是一个学习/设置的痛苦,但从长远来看它是值得的。
Leiningen也是一个很好的工具,但我个人不使用它的原因如下:
- 它在命令行上很棒,但是没有与Eclipse工作流程很好地集成
- Maven在Java世界中得到了更广泛的使用和更好的支持
您可以让leiningen为您编译这些,
:javac-options {:destdir "classes/"}
:java-source-path "src/main/java" ; location of Java source
选项或手动编译它们并将类文件移动到classes /目录。无需创建jar。
当你在ccw repl中时,你可以点击alt-e来查看堆栈跟踪。如果你得到一个NullPointerException,我不认为它是一个类路径问题。
如果你想学习如何做这个,那里有很好的指南。
https://github.com/technomancy/leiningen/blob/master/doc/MIXED_PROJECTS.md
但是在gist中,有一个类似于Java源代码的项目定义。
(defproject megacorp/superservice "1.0.0-SNAPSHOT"
:description "A Clojure project with a little bit of Java sprinkled here and there"
:source-paths ["src/clojure"]
:java-source-paths ["src/java"])
以上是关于在Clojure REPL中使用自定义Java类的主要内容,如果未能解决你的问题,请参考以下文章
Clojure 中的 Java 输入(读取行)在 Emacs 中无法正确读取
在 Clojure 中使用 repl 而不是 println
Clojure 的加载字符串在 repl 中有效,但在 `lein run` 中无效