Enclojure REPL在加载时找不到依赖的clj文件
我对Enclojure REPL和使用它的clojure模块有问题。Load/Change REPL to file/ns可以很好地处理一个孤立的clojure文件,但如果一个文件引用了另一个clojure文件(我试图从我的项目中使用该文件),则会中断 具体步骤如下: 创建一个新项目。 创建clojure模块foobar.clj命名空间com.acme.foobar 定义一个在foobar.clj中返回值的函数: ns com.acme.foobar :使用com.acme.othermodule defn myfunc1[] a 打开一个netbeansiderepl 从foobar.clj的上下文菜单中选择: 将REPL更改为文件/ns 负载 从REPL调用myfunc1函数。这很好: com.acme.foobar=>myfunc1 a 当我试图从foobar引用其他文件时,问题就开始了。我是这样做的: 创建新的clojure模块othermodule.clj ns com.acme.othermodule 来自其他模块的defn[] b 现在,请尝试从foobar.clj调用: defn myfunc2[] 来自其他模块 从othermodule.clj的上下文菜单中,我选择: 将REPL更改为文件/ns 负载 为了使REPL意识到它应该能够运行新的模块 我对foobar.clj做了同样的事情,它现在引用了othermodule.clj,但我得到: CompilerException java.io.FileNotFoundException:在类路径上找不到com/acme/othermodule\u init.class或com/acme/othermodule.clj:无源文件:50 com.acme.foobar=> 此错误消息来自Change REPL to file/ns和Load 我错过了什么?我应该做一些其他的技巧来实现这一点吗?即使是运行->清理并构建主项目这一绝望的措施也无济于事,这当然会让REPL业务非常痛苦Enclojure REPL在加载时找不到依赖的clj文件,clojure,enclojure,Clojure,Enclojure,我对Enclojure REPL和使用它的clojure模块有问题。Load/Change REPL to file/ns可以很好地处理一个孤立的clojure文件,但如果一个文件引用了另一个clojure文件(我试图从我的项目中使用该文件),则会中断 具体步骤如下: 创建一个新项目。 创建clojure模块foobar.clj命名空间com.acme.foobar 定义一个在foobar.clj中返回值的函数: ns com.acme.foobar :使用com.acme.othermodul
我正在使用NetBeans 6.7.1和enclojure-plugin-2009-11-3.nbm。我的第一个建议是从NetBeans/enclojure迁移到IDEA/La Clojure。JetBrains最近创建了一个开源版本的IDE,Clojure插件在其中运行良好。发现这一点后,我抛弃了NetBeans和Enclojure。我觉得在La Clojure工作很愉快,但当然你的里程数可能会有所不同 当我在NetBeans中这样做时,我似乎记得Enclojure源代码驻留在一个名为lib的子目录中。我想我解决了一个类似的问题,在要加载的文件名上添加了目录前缀。可能有点像../lib/YourName。我通过反复试验来解决这个问题,所以我无法将确切的规则和语法联系起来 有两件事可能会有所帮助: 您可以运行println System/getProperty java.user.dir之类的程序来找出Clojure认为它是从哪里执行的 您可以像我一样,开始使用绝对路径,直到找到正确的目录名。类似于/home/carl/NetbeansProjects/MyProject/lib/myfile.clj
从google group中获得了正确的解决方案: 有三种方法可以从窗口菜单创建REPL。不要使用这些,对吗
单击项目并启动Project REPL。现在路径已相应设置。谢谢!这个想法甚至没有出现在我的脑海中,尽管我在开源后将它安装到了我的工作机器上。我一定要试试。我也会试试你的NetBeans技巧,尽管如果我不能使用上下文菜单的文件加载选项,可用性会受到很大的影响。这很尴尬:原来这个想法是带有lib目录的。嘿,我很高兴你得到了正确的答案。