是否可以在不进入REPL的情况下编译clojure源代码?如果一个大项目在那里,那么它是不可能的手动编译每个程序&然后使它的jar文件,如果我想编译和获取类文件的一些指令使软件?是否有可能在不进入REPL的情况下编译clojure源代码?
2
A
回答
6
为了理解这些系统中有多少个可以工作,下面是一些没有repl的编译代码的最低代码。
假设你有一些类生成代码:
hello.clj:
(ns hello
(:gen-class
:methods [[sayHi [] String]]))
(defn -sayHi [this]
(println "hello world"))
你可以建立 “的Makefile” 出的Clojure代码
compile.clj:
(set! *compile-path* "./")
(compile 'hello)
然后,您只需将您的代码作为脚本调用即可。
$ java -cp ~/dj/lib/clojure.jar:./ clojure.main compile.clj
$ ls
compile.clj hello.clj hello$loading__4505__auto__.class
hello.class hello__init.class hello$_sayHi.class
现在你的代码被编译,你可以像任何其他类文件访问:
$ java -cp ~/dj/lib/clojure.jar:./ clojure.main
Clojure 1.3.0
user=> (import 'hello)
hello
user=> (.sayHi (hello.))
"hello world"
user=>
2
我有一个使用多种语言的大型项目,并使用make作为启动所有其他组件的粘合剂,并且这种方法效果很好。你可能做得很好,可以打电话给Maven或Leiningen,而不是使用make来重新创建它们。
如果你正在寻找一个替代leiningen,因为它不是为你工作,或者你只是想使用别的东西,那么也许你会喜欢Clojure Maven plugin
个人而言,我不能说Leiningen的太高这是我个人的选择,虽然互联网上有很多人,但值得探索其他选择。
3
是的 - 你当然可以在不使用REPL的情况下编译和运行Clojure代码。使用load function在运行时
- 加载Clojure的代码:
一些选项来做到这一点。这将读取,编译和评估指定的Clojure代码,而不涉及任何REPL。
- 包一切,因为使用Leiningen或Maven或任何其他合适的构建工具一个.jar - 那么你可以运行你的代码作为一个普通的Java应用程序,Clojure的代码将被编译和执行时 该.jar运行
- 从Java启动代码 - 编写一个启动Clojure编译器的Java应用程序,直接编译并执行Clojure代码。如果您将Clojure用作更大的Java应用程序的组件,这可能是一个明智的方法。
相关问题
- 1. 编译器可以在没有扩展的情况下编译代码吗?
- 2. 是否有可能使用Tuples进行WP7 Beta编译代码?
- 3. 在没有Visual Studio的情况下编译Microsoft的LoginAdmin.dll代码
- 4. 是否有可能阅读并进入.NET Framework源代码
- 5. 如何在没有主函数的情况下编译C源代码?
- 6. Scala代码在不使用scalac编译的情况下运行?
- 7. 是否有可能以编程方式在内存中编译java源代码?
- 8. 如何在不编译代码的情况下修改全局资源DLL?
- 9. 在每种可能的情况下使Emacs缩进代码
- 10. 如何在不添加不可达代码的情况下编译异步lambda?
- 11. gcc是否可以不编译代码?
- 12. 是否有可能在没有音频源的情况下使用CamcorderProfile?
- 13. 是否有可能通过VisualStudio在Windows下编译WinCE平台的代码?
- 14. 是否可以在不重新编译的情况下更改exe的图标?
- 15. 是否可以在不最小化Google Closure Compiler代码的情况下编译WebDriverJS?
- 16. 是否可以在不编译CoffeeScript文件的情况下使用JSDoc?
- 17. 是否有可能进入用pyc编译的IronPython dll?
- 18. 是否有可能在没有Arduino的情况下编写Arduino程序?
- 19. RuntimeException:不可编译的源代码(Netbeans)
- 20. 如何在不下载源代码的情况下使用EXSLT?
- 21. 是否有反汇编程序生成可编译的汇编源代码?
- 22. 代码与scalac编译但不是在REPL
- 23. 是否可以在不刷新窗口的情况下进行“密码”验证?
- 24. 是否有可能使用python编译c代码?
- 25. 我可以在不调试符号的情况下编译,然后从源代码创建它们吗?
- 26. 是否有可能使一个XSS在这种情况下
- 27. 是否可以在不重写代码的情况下重新调整Qt GUI?
- 28. 下面输入的代码不编译
- 29. 是否可以在不使用Visual Studio的情况下从TFS Azure下载源代码树?
- 30. 是否可以交叉编译MIPS的D源代码?
为什么你需要使用'make',不能,例如,使用['leiningen'] (https://github.com/technomancy/leiningen)或'maven'? – skuro
@skuro [http:// stackoverflow。com/questions/7686452/how-to-build-executable-jar-from-clojure-code-with-a-main-function-of-java-in-on]这是在windows上配置lein的方法,遵循相同的我无法正确配置它的指示集。 – vikbehal
即使在'make'中,你也必须遵循相同的步骤,比如提供'-main'等功能。只有几乎没有其他clojure开发者使用这样的工具集,而有很多快乐的leiningen用户。我建议你发布你的leiningen配置并寻求帮助。 – skuro