在 Eclipse IDE 中使用 Scala 代码。内部编译器错误

Posted

技术标签:

【中文标题】在 Eclipse IDE 中使用 Scala 代码。内部编译器错误【英文标题】:Using Scala code in eclipse ide. Internal compiler error 【发布时间】:2011-09-09 04:33:14 【问题描述】:

在 Netbeans 中,我使用了一些别人编写的 scala 代码(jar),并将其与 Scala-library.jar 一起包含到 java 项目项目中。它运行良好,没有打嗝。

现在,当我尝试使用 eclipse 执行相同操作时,出现以下构建错误

Internal compiler error: java.lang.ClassCastException:
org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding cannot be cast to 
org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding at 
org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.initializeTypeVariable(BinaryTypeBinding.java:944)   DemoApp.java    /demo/  line 0  Java Problem

在谷歌上,我发现其他人遇到了这个问题,但没有看到任何修复。

如果你们中的任何人看到此错误并想出如何解决它,请在此处分享。 让我知道是否需要任何其他信息。不幸的是,我没有我使用的 Scala 代码的来源,只有 jar。如果你需要 DemoApp.java 的代码,我可以把它贴在这里,但这不是很有用:它只是引用了 Scala 代码中的一个对象。

详细信息:scala-2.8.0.r22602-b20100720020114

谢谢。

【问题讨论】:

我需要这个才能使用 Scala 2.8.x。 【参考方案1】:

Scala 的一个问题是它在不同版本之间缺乏二进制兼容性。 要么使用编译原始 Jar 时使用的相同库版本,要么重新编译 Jar(如果可以的话)。

【讨论】:

【参考方案2】:

您是否启用了 JDT 编织?转到 Preferences -> JDT Weaving 找出答案。如果它被禁用,那么您的 IDE 中可能会出现莫名其妙的错误。

【讨论】:

我启用了 JDT 编织。所以不是因为这个。我认为问题在于 Java 代码中返回并使用了 Scala List 类型。当我把List改成Array后问题就消失了,和Java数组一样。【参考方案3】:

好的。我终于找到了解决办法!

感谢SO question

问题似乎是 Scala 2.8 编译器(显然)。 2.9 中没有这个问题。 建议的修复之一是use Scala 2.9,但这并不总是可行的。所以这是正确的解决方案。

问题在于 Scala 的 List 类型。我发现我在某处的 Scala 代码中返回(暴露)List,这导致 Eclpise 中的 Java 出现问题。

要解决此问题,请不要返回 List。返回Array 或一些Java 类型。

【讨论】:

以上是关于在 Eclipse IDE 中使用 Scala 代码。内部编译器错误的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse Scala IDE:如何构建独立的 Scala 应用程序?

Scala IDE for Eclipse的下载安装和WordCount的初步使用

使用 Scala IDE 中的 SBT

Eclipse Scala IDE 代码未编译

scala中的zmq,eclipse IDE中的java.library.path中没有jzmq

使用 SBT 和 Scala IDE 添加和删除依赖项