是否可以在不进入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. 如何在不编译源代码的情况下安装Numpy
- 2. 是否可以在没有lib的情况下编译C++?
- 3. 编译器可以在没有扩展的情况下编译代码吗?
- 4. 是否有可能在不访问代码库的情况下使用CodedUI
- 5. 是否有可能使用Tuples进行WP7 Beta编译代码?
- 6. 在没有Visual Studio的情况下编译Microsoft的LoginAdmin.dll代码
- 7. 是否有可能阅读并进入.NET Framework源代码
- 8. 如何在没有主函数的情况下编译C源代码?
- 9. 是否有可能以编程方式在内存中编译java源代码?
- 10. Scala代码在不使用scalac编译的情况下运行?
- 11. 是否有可能将C代码编译为Javascript代码?
- 12. 是否有任何理由在没有优化的情况下进行编译?
- 13. 是否可以在不使用点符号的情况下编写此代码?
- 14. 如何在不编译代码的情况下修改全局资源DLL?
- 15. 在每种可能的情况下使Emacs缩进代码
- 16. 如何在不添加不可达代码的情况下编译异步lambda?
- 17. 是否可以将一串Clojure代码编译为java的类?
- 18. gcc是否可以不编译代码?
- 19. 是否有任何情况下DateTimeOffset可能不可靠?
- 20. 如何在没有构建组件的情况下进入MVC4源代码
- 21. 是否有可能在没有音频源的情况下使用CamcorderProfile?
- 22. 为什么在没有enable_if的情况下不能编译?
- 23. 是否有可能通过VisualStudio在Windows下编译WinCE平台的代码?
- 24. 是否可以在不重新编译的情况下更改exe的图标?
- 25. 我可以告诉GHC只是在不实际编译的情况下对代码进行类型检查吗?
- 26. 是否可以在不最小化Google Closure Compiler代码的情况下编译WebDriverJS?
- 27. 是否可以在不编译CoffeeScript文件的情况下使用JSDoc?
- 28. 是否可以在不重新编译的情况下更改Passenger Ruby版本?
- 29. 是否可以在不提供依赖性的情况下编译java文件?
- 30. 是否有可能进入用pyc编译的IronPython dll?
为什么你需要使用'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