【问题标题】:How to use Scala in IntelliJ IDEA (or: why is it so difficult to get a working IDE for Scala)?如何在 IntelliJ IDEA 中使用 Scala(或者:为什么很难为 Scala 获得一个工作的 IDE)?
【发布时间】:2011-02-09 17:19:48
【问题描述】:

我最近放弃了尝试在 Eclipse 中使用 Scala(完成之类的基本内容不起作用)。所以现在我正在尝试 IntelliJ。我不会走太远。

我已经能够编辑程序(在语法高亮和补全中......耶!)。但我什至无法运行最简单的“Hello World”。这是最初的错误:

Scala 签名 Predef 版本错误 预计 5.0 找到:4.1 in .... scala-library.jar

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

更新

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

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

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

创建了一个新类:

对象你好{ def main(args: Array[String]) { println("你好:" + 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 网站(我猜屏幕截图证明他们确实测试了这个版本!)。现在一切正常!!!

【问题讨论】:

  • 你是否在项目依赖项中添加了 scala 编译器和库 jars?
  • 有类似的问题,但在我的情况下,这是因为文件顶部的包声明
  • 现在一切都变了,包括 Idea 和 Scala。 Idea 现在有 SBT 集成。现在所有的答案都无关紧要了,所有这些事情现在都变得更容易了。

标签: scala intellij-idea scala-2.8 scala-2.7


【解决方案1】:

我遇到了类似的问题,按照this 博客帖子的说明解决了我的问题

【讨论】:

    【解决方案2】:

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

    我的项目使用 maven 作为主要构建工具,将项目导入 Intellij 可能是造成这些错误设置的原因。

    【讨论】:

    • 嗯,实际上我想建议从 maven 构建文件构建 IDEA 项目,因为这是我在过去 12 个月中成功创建 10 多个项目的方式。
    【解决方案3】:

    我刚刚进行了全新安装,我自己也遇到了同样的问题。 原来,因为我在根包中创建了文件,所以IDEA在顶部添加了一个包语句,并命名了一个包。我假设这随后被编译为“包对象 Main”——2.8 中的有效语法?无论如何,我删除了说包的那一行,一切都很好。

    【讨论】:

      【解决方案4】:

      我使用 Netbeans 编写 Scala 程序。到目前为止,它适用于我的代码。您可以在这里试用插件:http://wiki.netbeans.org/Scala68v1

      【讨论】:

        【解决方案5】:

        我在 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 internal error: class java.lang.ClassNotFoundException")。

        现在是怪异的部分:)。我右键单击项目,选择“模块设置”,查看所有设置,但 我没有更改任何内容。点击“应用”和“确定”,再次尝试运行配置,成功了 :) .

        我使用 Intellij Idea 9.0.2 最终版本(内部版本 95-66); Ubuntu 9.10 和 JDK 1.6.0_18。还要提一下,我在 Intellij 中配置了一个 JDK,否则需要额外的步骤来配置它。

        更新:

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

        【讨论】:

        • 谢谢!这与我观察到的一致,但在我看到你的答案之前并不是很明显!
        • 天啊!非常感谢这个提示!省了我很多很多的麻烦! :)
        • 天才。谢谢,我会在下一次可能的情况下责怪 IntelliJ 开发人员。
        【解决方案6】:

        安装插件是先决条件。

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

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

        【讨论】:

          【解决方案7】:

          我昨天在尝试设置时遇到了同样的问题。解决方案很简单,你只需要在项目设置中的某处设置 scala。

          【讨论】:

          • 我确实去设置添加了 Scala 插件。还有什么我需要做的吗?谢谢
          • 主教程中唯一不明显的事情是将 scala 库添加到您的模块依赖项中。这是在模块设置 -> 依赖项选项卡 AFAIR 中。即使使用 2.8 rc 也能完美运行。
          【解决方案8】:

          要回答您的问题,很难获得适用于 Scala 的 IDE,原因有两个: (a) Scala 才刚刚开始接触广泛的受众,而且 (b) 由于 (a),没有将时间花在 Scala IDE 上的商业案例。

          此外,如果您已经足够大,可以回想起来,并且足够年轻,还可以记住,那么您就会知道,在 Java 的头五年或更长时间里,我们一直被 JBuilder 之类的好工具所困比在你说的时候编译你的代码 - 没有错误突出显示,没有自动导入,甚至不存在重构这个词。如果你想开拓,你需要准备好自己开辟一些道路,或者至少是灌木丛。

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

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

          您可以在IDEA Scala Plugin Discussion Forum 上试试运气,虽然我在那里的帖子没有收到很多回复。

          【讨论】:

            【解决方案9】:

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

            【讨论】:

            • 这不可能……它只是一个 3 行的“hello world”程序!
            • 不,真的... 3 行代码不可能“用两个不同的 Scala 版本编译”。 IntelliJ 有可能从之前的实验中找到文件;所以我现在要尝试完全卸载/重新安装。
            • 顺便说一句,您使用什么 IDE?谢谢
            • 我?我使用想法。我发现它运作良好并且已经有很长一段时间了。至于混合版本假设,它适用于所有代码,因此您必须使用由与编译您自己的代码相同版本的 Scala 编译器编译的库来执行。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-08-13
            • 2014-08-08
            • 1970-01-01
            • 2023-02-20
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            相关资源
            最近更新 更多