1

[编辑]:我是个白痴。我使用的是“面向 Java 开发人员的 Eclipse IDE”,应该一直在使用“Eclipse Classic”。Scala 插件在 Classic 下工作得更好。

* [编辑]:11/1/2011 - 10/31 发布的 Beta 12 版本似乎要好得多 *

**[编辑]:11/4/2011 - Beta 12 版本变得不稳定,以至于我们的团队切换到 IntelliJ。希望以后尝试Eclipse插件,有不一样的体验。

我在 Eclipse 中有一个混合的 java/scala 项目,我发现代码完成并不总是有效。“对象”和在不同项目中定义的类似乎存在最多的问题。我知道这只是 scala 插件的一个“功能”,但是我应该做些什么来尽量减少这些功能的影响?

Eclipse Indigo
Scala Plugin: 2.0.0-beta11 

在玩了一天之后,我发现从 scala 访问 java 类的静态成员时会出现大多数问题。

4

3 回答 3

5

您可能想尝试http://groups.google.com/group/scala-ide-user组,前提是您可以提供更多详细信息并且希望不要使用“ suck ”这个词。

我只能说这个简短的测试用例对我来说在 Helios SR2 和 Eclipse Scala 插件 2.0.0.beta11 上运行良好。我不确定对 Java 多项目的支持有多深,并且可能存在已知的限制。

我用以下结构进行了测试。

  1. test1 scala 项目、test2 scala 项目和一个 test3 java 项目。
  2. 我将 test1 和 test3 作为依赖项目添加到 test2 中,并将它们添加到构建路径中
  3. 在 test2 中,我可以自动完成来自 test1 和 test3 的类;在 test1 的一个对象上(如果你还在关注我)

这是自动完成的内容(见评论)

package test2

import test1.{A1, O1} // A1 and O1 choices offered from A or O

class A2 {

  val a1 = new A1
  a1.ma1("foo") // ma1 was autocompleted from m

  val a3 = new test3.A3 // test3 choice offered from test
  a3.ma3("wqqw").toLowerCase() // ma3 completed from m
  // toLowerCase was completed from toL (3 choices offered)

  val o1 = O1.mo1  // mo1 was autocompleted from m
  val ox = O1 // O1 was completed from O (as second choice)
}
于 2011-10-28T02:51:40.100 回答
3

目前(Scala 插件版本:2.0.0.beta11-2_09-201110031011-3a97f5e,Eclipse 版本:3.6.2.v201102101200)插件中的代码完成存在许多问题。顺便说一句,这不是插件的最新版本,我知道其中一些问题正在积极处理中。

首先,请确保在 Scala->Setup Diagnostics 中检查完成的两个选项:

  1. 使用与 Scala 兼容的 JDT 内容辅助提案
  2. 启用 JDT 内容自动辅助激活

有两个普遍的问题领域:

  1. 类的自动完成有时不会正确添加导入。

    val foo = new Th<ctrl-space>

  2. 当您执行 ctrl-space 时,不会出现类上的方法。

这些问题的解决方法是为您尝试手动使用的类添加导入。这避免了绝大多数问题。我知道这是一种痛苦,但它确实有效。

我最近没有看过这段代码,但我记得问题主要是由于:

  1. scala 编译器的速度(它只是没有 java 编译器那么快)
  2. 班级搜索工具(正在开发中,我认为现在大部分问题都已经解决了)
  3. 所需提案的复杂性,即您必须等待 scala 编译器完成它的工作,以便它可以从所有特征等中了解所有方法。
  4. 解决方案的成熟度。

另外,请注意,您期望的某些方法可能根本不会出现。如果对象受到隐式转换,那么您将无法获得您期望的方法。

如果您确实遇到问题,请先查看已知问题,然后查看未解决问题列表。如果问题存在,请将您的用例添加到其中,包括版本号和任何其他相关信息。如果您的问题不存在,请创建它。

对于额外的布朗尼点,您可以在 github 上克隆 scala ide并提交包含您的修复的拉取请求。

于 2011-10-28T08:57:43.567 回答
0

这是一篇旧文章,我的环境略有不同,但我在使用 Eclipse Luna + Scala IDE 插件(4.2.0)时遇到了同样的问题,并找到了一个想要贡献的解决方案。

就我而言,Ctrl+Space 上没有自动完成功能,实际上也没有显示编译错误。

我的解决方法是

  1. 右键单击 Scala 项目
  2. Scala -> 将 Scala 库添加到构建路径

然后它开始工作。

在此处输入图像描述

(我的项目中缺少 Scala 库容器 [2.11.7])

于 2015-10-03T07:18:47.330 回答