如何在IntelliJ IDEA中使用Scala(或者:为什么难以获得Scala的工作IDE)?

我最近放弃了尝试在Eclipse中使用Scala(像完成这样的基本内容不起作用) . 所以现在我正在尝试使用IntelliJ . 我没有走得太远 .

我已经能够编辑程序了(在语法高亮和完成之内......耶!) . 但我甚至无法运行最简单的“Hello World” . 这是原始错误:

Scala signature Predef has wrong version
Expected 5.0
found: 4.1 in .... scala-library.jar

但那是昨天的IDEA 9.0.1 . 见下文...

UPDATE

今天我卸载了IntelliJ 9.0.1,并安装了9.0.2 Early Availability,以及4/14稳定版的Scala插件 .

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

  • 从头开始的新项目

  • JDK是1.6.u20

  • 接受默认(项目)而不是global / module

  • 接受将Scala 2.8.0beta1下载到项目的lib文件夹中

创建了一个新类:

object hello {
  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) ]

FINAL UPDATE

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

回答(9)

2 years ago

我尝试在Intellij Idea 9.0.2中运行Scala项目时遇到了相同的scalac错误,并且我设法找到了一个偶然的解决方案:) . 这些是我在创建项目和运行项目时所采取的步骤 .

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

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

之后,我创建了一个启动配置(“编辑配置”),选择了“应用程序”模板 . 我设置为主类Test并在“使用类路径和模块的JDK”组合框中选择项目名称(“TestScala”) . 当我运行配置时,我得到与您报告的相同的错误(“Scalac内部错误:类java.lang.ClassNotFoundException”) .

现在来了怪异的部分:) . 我右键单击该项目,选择"Module Settings",查看所有设置,但 I don't change anything . 单击"apply"和"ok",再次尝试运行配置和 it works :) .

我使用Intellij Idea 9.0.2最终版本(build 95-66); Ubuntu 9.10和JDK 1.6.0_18 . 我还必须提到我在Intellij中配置了JDK,否则有一个额外的步骤来配置它 .

UPDATE:

检查模块的设置时,需要单击 Module->ScalaFacets->Scala (expand it and click on Scala(ProjectName)) . 这两个设置都与scala编译器和scala库位置有关 . 我猜这些值在创建项目时没有正确设置,但是一旦用户触摸它们并保存设置就会保存 .

2 years ago

为了回答你的问题,很难为Scala获得一个可用的IDE,原因有两个:(a)Scala刚刚开始接触到广泛的受众;(b)由于(a),没有商业案例可以花时间一个Scala IDE .

此外,如果你的年龄足以让你回想起来并且年轻到足以让人记住,那么你会知道,在Java的前五年或更长时间里,我们一直坚持使用像JBuilder这样的好工具,而不仅仅是编译你的工具 . 代码,当你这么说 - 没有错误突出显示,没有自动导入,并且甚至不存在重构一词 . 如果你想成为先锋,你需要准备好自己削减一些道路,或者至少是灌木丛 .

我知道这对你没用,但我已经在Linux,Mac和Windows上成功地使用了IDEA for Scala . 我通常在本地某处安装Scala SDK并指向IDEA,而不是使用“下载”选项 .

目前,我主要在Mac OS X上使用带有Scala 2.8.0.Beta1-RC5的EAP version of IDEA 9,并且's working well (except that fsc doesn' t似乎适用于混合源) .

你可以在IDEA Scala Plugin Discussion Forum试试你的运气,虽然我没有对我自己的帖子做出很多回应 .

2 years ago

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

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

最后,在这些模块中找到Scala方面,并在那里取消选中两个复选框 .

2 years ago

我刚做了一个全新安装,并且我自己也遇到了同样的问题 . 事实证明,因为我在根包中创建了文件,所以IDEA在顶部添加了一个包语句,并命名了一个包 . 我假设这被编译为“package object Main” - 2.8中的有效语法?无论如何,我删除了说包的行,它一切正常 .

2 years ago

我在尝试设置时遇到了同样的问题 . 解决方案非常简单,您只需在项目设置中的某处设置scala即可 .

2 years ago

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

2 years ago

我使用Netbeans编写scala程序 . 到目前为止,它对我的代码非常有效 . 你可以在这里试试插件:http://wiki.netbeans.org/Scala68v1 .

2 years ago

我收到此错误,还必须右键单击项目和“打开模块设置” . 然而,它不仅仅是打击申请 . 我必须确保每个项目的内容根都是正确的 . 出于某种原因,有一些不正确的源和测试文件夹 .

我的项目使用maven作为主要构建工具,将项目导入Intellij可能是创建这些不正确设置的原因 .

2 years ago

我有类似的问题,以下this博客帖子说明解决了我的问题