在 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 代码中返回并使用了 ScalaList
类型。当我把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的初步使用