【问题标题】:Suggest imports does not work with Scala IDE (and sbt)建议导入不适用于 Scala IDE(和 sbt)
【发布时间】:2017-10-04 07:18:17
【问题描述】:

我在使用自动导入建议设置 Scala 和 Eclipse 时遇到了几个问题。我可以运行(编译和运行)简单的 Scala 代码。但我需要自动/建议导入功能。

我的第一次尝试是使用现有的 Eclipse(版本:Neon.2 Release (4.6.2))并通过更新站点安装 Scala。安装完成,但无法检测到我的 JRE。指向我的javac 所在的目录,并且它们的父级也没有工作,Eclipse 没有将其识别为有效的 JRE 根。

/usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac

所以我决定从http://scala-ide.org/ 下载一个 Scala IDE(Build id: 4.5.0-vfinal-2016-12-13T10:59:29Z-Typesafe)

我已经通过自制软件安装了 scala (2.12.2),但我了解到 Scala IDE 带有他们自己的 Scala 版本(2.10 和 2.11),所以这应该不是问题。

我尝试按照本教程设置一个简单的 Akka 应用程序,即使它有点过时我也试了一下:http://doc.akka.io/docs/akka/1.3.1/intro/getting-started-first-scala-eclipse.html

当然,我安装了较新版本的 Akka (akka_2.11-2.4.18.zip) 并尝试将 akka-actor.jar 添加为外部 jar。 当尝试在 Scala 类文件中使用 Worker 类时,它向我显示无法找到该类的错误。单击红色 x 并没有显示解决方案,我需要手动编写导入行。 我的问题正是关于如何配置我的设置,Eclipse 向我展示了自动导入正确类的解决方案。

我尝试使用 sbt (0.13) 和 sbteclipse 设置项目。我按照这里的解释进行了设置:How to add a scala library to eclipse 并添加了 Akka 作为依赖项。 它安装了很多东西(在终端中看到了很多输出),我在 Eclipse 中使用了Import existing project,但自动导入仍然不起作用。如果我打开属性并导航到 Java 构建路径,它看起来很好,我的意思是没有错误或警告。

这就是它向我展示的内容:

其实这条线是隐藏在弹出窗口中的,就是这条线:

class Worker extends Actor {

我的 .project 文件:

<projectDescription>
  <name>My Project</name>
  <buildSpec>
    <buildCommand>
      <name>org.scala-ide.sdt.core.scalabuilder</name>
    </buildCommand>
  </buildSpec>
  <natures>
    <nature>org.scala-ide.sdt.core.scalanature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
  </natures>
  <linkedResources> </linkedResources>
</projectDescription>

我的 build.sbt 文件:

name := "My Project"

version := "1.0"

scalaVersion := "2.11.11"

libraryDependencies +=
  "com.typesafe.akka" %% "akka-actor" % "2.5.1"

我的 .classpath 文件:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="foo.bar"/>
    <classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
    <classpathentry kind="lib" path="/Users/timaschew/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.5.1.jar" sourcepath="/Users/timaschew/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/srcs/akka-actor_2.11-2.5.1-sources.jar">
        <attributes>
            <attribute name="javadoc_location" value="jar:file:/Users/timaschew/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/docs/akka-actor_2.11-2.5.1-javadoc.jar!/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="/Users/timaschew/.ivy2/cache/com.typesafe/config/bundles/config-1.3.1.jar" sourcepath="/Users/timaschew/.ivy2/cache/com.typesafe/config/srcs/config-1.3.1-sources.jar">
        <attributes>
            <attribute name="javadoc_location" value="jar:file:/Users/timaschew/.ivy2/cache/com.typesafe/config/docs/config-1.3.1-javadoc.jar!/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="lib" path="/Users/timaschew/.ivy2/cache/org.scala-lang.modules/scala-java8-compat_2.11/bundles/scala-java8-compat_2.11-0.7.0.jar" sourcepath="/Users/timaschew/.ivy2/cache/org.scala-lang.modules/scala-java8-compat_2.11/srcs/scala-java8-compat_2.11-0.7.0-sources.jar">
        <attributes>
            <attribute name="javadoc_location" value="jar:file:/Users/timaschew/.ivy2/cache/org.scala-lang.modules/scala-java8-compat_2.11/docs/scala-java8-compat_2.11-0.7.0-javadoc.jar!/"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

【问题讨论】:

    标签: eclipse scala sbt


    【解决方案1】:

    对于 Scala 开发来说,Eclipse 似乎并不是一个真正好的选择。

    我切换到 IntelliJ。 Scala 可以在 IntelliJ 的第一次使用时安装,它也支持 sbt。 IntelliJ 识别 build.sbt 文件中的更改以触发 sbt(例如安装新的依赖项)。

    当然建议导入一些包以使用未知类也可以正常工作。

    它还允许您非常轻松地安装不同版本的 Scala。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 2017-01-07
      • 2012-07-05
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2014-05-11
      • 2019-02-12
      相关资源
      最近更新 更多