om-*_*nom 29 interop scala clojure jvm-languages
我正在寻找这两种语言的多语言编程指南.
我知道它们之间的互操作是可能的,因为它们都在同一个Java VM上运行,并且都被编译为相同的字节码.但有一些麻烦:
(是的,是的,我知道我可以用一种语言插入jar来投射其他语言.)
所以问题是如何在Scala和Clojure中设置多语言开发?
Art*_*ldt 17
短的anser:使用Maven3
maven3与clojure和maven-scala-plugin的zi插件将允许你有一个很好地集成的多语言项目,你可以使用任何你想要的语言,只要它的Java;)
Maven3的一个重大变化是推动多语言JVM编程,包括以多种语言编写POM的能力.虽然你获得了丰厚的回报,但是当你走这条路线时,你会失去莱宁根的光彩.
就个人而言,尽管是公认的答案,我仍然不会直接使用Maven.以下是简单的Leiningen项目定义:
(defproject polyglot "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:plugins [[lein-antlr4 "0.1.0-SNAPSHOT"]
[lein-scalac "0.1.0"]]
:dependencies [[org.clojure/clojure "1.5.1"]
[org.antlr/antlr4 "4.0"]
[org.scala-lang/scala-library "2.10.1"]]
:warn-on-reflection true
:antlr4-source-paths ["antlr4"]
:antlr4-options {:package "parser" :listener true}
:antlr4-compile-path "target/antlr4/parser"
:java-source-paths ["target/antlr4/parser" "src/java"]
:scala-source-path "src/scala"
:prep-tasks ["antlr4" "javac" "scalac" "compile"])
使用ANTLR4插件下载和'lein install'lein-antlr4插件.如果您不需要它,只需从项目定义中删除相关的行.
要使用Scala插件,我需要下载并更改
[org.scala-lang/scala-compiler "2.9.1"]
Run Code Online (Sandbox Code Playgroud)
至
[org.scala-lang/scala-compiler "2.10.1"]
Run Code Online (Sandbox Code Playgroud)
在插件的project.clj中,然后在本地'lein install'.随着旧的依赖版本,我得到了
java.lang.Error: typeConstructor inapplicable for <none>
Run Code Online (Sandbox Code Playgroud)
来自Scala编译器.