Eclipse无法识别Scala代码

时间:2011-12-15 15:06:30

标签: eclipse scala eclipse-plugin scala-ide

我有Eclipse Indigo和Scala IDE插件。我从Maven下载了一个电梯项目。它构建正确。 Eclipse说它正在使用Scala编辑器查看它。

然而,它仍然在每一行给出一个错误,因为它将代码视为Java(它给出了没有分号的错误,对于单词“def”等)我尝试清理项目,它仍然给出了错误。

11 个答案:

答案 0 :(得分:46)

我会尝试一些事情:

1)右键单击项目,配置>添加Scala Nature。

2)在Scala菜单中,运行Setup Diagnositics ...>使用推荐的默认设置

答案 1 :(得分:8)

打开Package Explorer,查看您的scala源代码。该图标是显示S(对于Scala)还是J(对于Java)?

如果您看到S,那么您可能会错过Scala Nature。正如Luigi建议的那样,尝试添加Scala Nature并查看是否能解决您的问题(右键单击项目,配置>添加Scala自然。)

否则,如果您看到J,则可能无法启用“JDT Weaving”。这不应该发生,可能取决于您安装的其他插件。

如果我是你,我会尝试简单地卸载Eclipse中的所有Scala IDE插件(“Scala IDE for Eclipse”,以及“JDT Weaving for Scala”,如果你在安装的插件列表中看到它)。然后,重新安装Scala IDE 2.0.0-RC04。我知道,这不是理想的解决方案,但如果没有更多信息,很难说出发生了什么。

如果这也不起作用,请在scala-ide-user Mailing List中留言。确保提供Eclipse安装中的插件的完整列表。这可能有助于我们了解正在发生的事情。

答案 2 :(得分:7)

复制现有Java项目以启动新项目或使用项目文件生成器时,可能会出现此问题。

您可以看到的一件事是您的Java Build Path项目内部属性。 确保您的scala源文件夹没有**/*.java之类的包含过滤器。 确保它是**/*.scala或删除它,并且scala插件应检测到您的来源。

答案 3 :(得分:2)

它甚至可能比这简单,我忘了在源文件的顶部编写包名,因此Eclipse忽略了将其视为Scala文件。

答案 4 :(得分:2)

我通过

用sbt-eclipse解决了编译/构建错误的问题
  1. 右键单击项目
  2. Scala菜单 - 选择新的Scala安装和 选择版本直到没有列出错误

答案 5 :(得分:1)

我遇到了同样的问题,因为在项目中没有包含scala文件夹 遵循以下步骤 项目 - >属性 - > java内置路径 - >来源 - >添加文件夹

答案 6 :(得分:0)

我在使用Maven和Eclipse之前也遇到过这个问题 - 我将在Scala视角中工作,一切都很好,然后在某些时候Indigo完全失去了它使用Scala的事实并且是用Java编译器构建我的代码。没有多少摆弄Build Path和配置,清理项目或启用Scala特性似乎解决了这个问题。

到目前为止,我提出的唯一解决方案是在使用Maven时使用IntelliJ,并且仅在使用SBT构建项目时才使用Scala Eclipse插件。您可以尝试将Maven POM转换为SBT项目,但每次依赖项更改时都必须更新。 Heiko Seeberger的sbt-eclipse插件很漂亮。

答案 7 :(得分:0)

我有类似的问题,但是当我删除Scala Nature并将其添加回来时,它就变得可以了。现在这很好。

但还有另一个问题:

我的Java Classes拒绝识别我的Scala。但是当我做一个" Ctrl + Click" =公开宣言,它去了正确的地方。依赖于Scala的我的Java类看起来像Red一样。我检查了Build Path设置等,它们看起来都很好。

答案 8 :(得分:0)

  

我的Java Classes拒绝识别我的Scala。但是,当我执行“Ctrl + Click”=打开声明时,它会转到正确的位置。依赖于Scala的我的Java类看起来像Red一样。我检查了Build Path设置等,它们看起来都很好。

我遇到了同样的问题。当我将Scala类移动到正确的包文件夹时,它工作正常。 Scala不需要这个。但只有Java编辑器才重新调整Scala类。

答案 9 :(得分:0)

我使用Maven生成我的jar。所以按照以下步骤操作 右键单击项目 - > Maven - >更新项目 - >检查强制更新快照/版本 - >行

答案 10 :(得分:0)

有时,或者在某些版本中,您不会看到"添加Scala Nature"选项。

手动将其添加到.project文件中应该这样做。例如。这个项目支持scala和java性质,因此它将.java视为Java,将.scala视为Scala。

<projectDescription>
  <name>myprojectname</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>