【问题标题】:Using Scala code in eclipse ide. Internal compiler error在 Eclipse IDE 中使用 Scala 代码。内部编译器错误
【发布时间】: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。

标签: java eclipse scala netbeans


【解决方案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 类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多