如何在IntelliJ IDEA中使用Scala(或者:为什么要为Scala获得一个可用的IDE非常困难)?

我最近放弃了尝试在Eclipse中使用Scala(基本的东西,如完成不起作用)。 所以现在我正在尝试IntelliJ。 我不是很远。

我已经能够编辑程序(在语法突出和完成…在!)。 但即使是最简单的“Hello World”,我也无法运行。 这是原来的错误:

斯卡拉签名Predef有错误的版本
预计5.0
发现:4.1在.... scala-library.jar中

但是这是IDEA 9.0.1的昨天。 见下文…

UPDATE

今天,我卸载了IntelliJ 9.0.1,并安装了9.0.2的早期可用性,以及Scala插件的4/14稳定版本。

然后我通过向导从头开始设置一个项目:

  • 新的项目从零开始
  • JDK是1.6.20
  • 接受默认(项目)而不是全局/模块
  • 接受下载Scala 2.8.0beta1到项目的lib文件夹

创build一个新的类:

对象你好{
   def main(args:Array [String]){
     println(“hello:”+ args);
   }
 }

对于我的努力,我现在有一个全新的错误:)

这里是:

Scalac内部错误:类java.lang.ClassNotFoundException [java.net.URLClassLoader $ 1.run(URLClassLoader.java:202),java.security.AccessController.doPrivileged(Native Method),java.net.URLClassLoader.findClass(URLClassLoader.java :190),java.lang.ClassLoader.loadClass(ClassLoader.java:307),sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301),java.lang.ClassLoader.loadClass(ClassLoader.java:248) ,java.lang.Class.forName0(Native Method),java.lang.Class.forName(Class.java:169),org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java:72) ]

最终更新

我卸载了9.0.2 EA并重新安装了9.0.1,但是这一次使用了Scala的2.7.3版本,而不是默认的2.7.6,因为2.7.3是IntelliJ网站屏幕截图中显示的我猜屏幕截图certificate他们实际上testing了这个版本!)。 现在一切正常!

当我尝试在Intellij Idea 9.0.2中运行一个Scala项目时遇到了相同的scalac错误,我设法find了一个解决scheme:)。 这些是我在创build项目和运行项目中所采取的步骤。

我在Intellij Idea 9.0.2 final中创build了一个Scala项目(今天发布)。 我已经安装了Scala插件,重新启动了IDE,并创build了一个Scala-2.8.0.Beta1作为项目​​库的新Scala项目(名称为“TestScala”)。 一旦创build了项目并下载了scala库,我就创build了一个包含以下内容的Test.scala文件:

object Test { def main(args:Array[String]){ println("hello") } } 

之后,我创build了一个启动configuration(“编辑configuration”),select“应用程序”模板。 我将其设置为主类Test,并在“使用模块的类path和JDK”combobox中select项目名称(“TestScala”)。 当我运行configuration我得到了相同的错误,你报(“斯卡拉克内部错误:类java.lang.ClassNotFoundException”)。

现在来怪异的一部分:)。 我右键点击该项目,select“模块设置”,看看所有的设置,但我不会改变任何东西 。 点击“应用”和“确定”,尝试再次运行configuration, 它的工作 :)。

我使用Intellij Idea 9.0.2最终版(build 95-66); Ubuntu 9.10和JDK 1.6.0_18。 我也不得不提一下,我在Intellij中configuration了一个JDK,否则有一个额外的步骤来configuration它。

更新:

当检查模块的设置时,需要点击Module-> ScalaFacets-> Scala(展开它并点击Scala(ProjectName)) 。 这两个设置都是关于scala编译器和scala库位置的。 我猜这些值在创build项目时没有正确设置,但是一旦用户触摸并保存设置就会保存。

为了回答你的问题,为Scala开发一个可用的IDE是很困难的,原因有两个:(a)Scala只是刚刚开始接触到广泛的受众;(b)由于(a),没有时间花在商业上一个Scala IDE。

另外,如果你已经足够大了,可以回想起来,你还记得,在Java的头五年或更长时间里,我们被JBuilder这样的好工具所束缚,当你这样说的代码 – 没有错误突出显示,没有自动导入,单词重构甚至不存在。 如果你想开拓者,你需要准备好自己削减一些道路,或者至less是蛮横的。

我知道它不会帮助你,但是我已经在Linux,Mac和Windows上成功地使用了IDEA for Scala。 我通常在本地安装了Scala SDK,并指出了IDEA,而不是使用“下载”选项。

目前,我主要在Mac OS X上使用EAP版本的IDEA 9 ,使用Scala 2.8.0.Beta1-RC5,它运行良好(除了fsc似乎没有混合来源)。

你可以在IDEA的Scala Plugin论坛上试试你的运气,尽pipe我对自己的post没有太多的回应。

安装插件是先决条件之一。

接下来要做的是定义一个包含Scala库编译器JAR文件(至less是scala-compiler.jarscala-library.jar )的库(全局的或特定于项目的;我使用全局的)。 添加源JAR和文档JAR或URL也是一个好主意。 然后让这个库成为你项目中包含Scala代码的任何模块的依赖项。

最后,在这些模块中findScala方面,并取消select这两个checkbox。

我只是做了一个全新的安装,自己也有这个相同的问题。 事实certificate,因为我已经在根包中创build了这个文件,所以IDEA在顶部添加了一个包声明,并命名了一个包。 我认为这是编译为“包对象主” – 在2.8有效的语法? 无论如何,我删除了说包的行,它一切正常。

我试图设置它,昨天也有同样的问题。 解决scheme非常简单,你只需要在项目设置的某个地方设置scala。

您正在混合使用两个不同的Scala版本编译的代码。

我使用Netbeans编写Scala程序。 到目前为止,它与我的代码很好地工作。 你可以在这里试试这个插件: http : //wiki.netbeans.org/Scala68v1 。

我得到这个错误,也不得不右键单击项目和“打开模块设置”。 但是,这不仅仅是适用。 我必须确保每个项目的内容根目录都是正确的。 出于某种原因,有一些不正确的源文件和testing文件夹。

我的项目使用Maven作为主要的构build工具,并将项目导入Intellij可能是创build这些不正确的设置。

我有类似的问题,继这个博客文章说明解决了我的问题