2011-06-06 68 views
0

在Netbeans中,我使用了其他人编写的一些scala代码(jar),并将其与Scala-library.jar一起包含到Java项目项目中。它很好地运作,没有打嗝。在eclipse IDE中使用Scala代码。内部编译器错误

现在,当我尝试做使用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代码的源代码,只有罐子。如果你需要DemoApp.java的代码,我可以将它粘贴到这里,但这不是很有用:它只是引用了Scala代码中的一个对象。

详情:斯卡拉-2.8.0.r22602-b20100720020114

感谢。

+0

我需要这个与Scala 2.8.x一起工作。 – Jus12 2011-07-02 10:21:40

回答

0

好的。我终于找到了解决方案!

由于这个SO question

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

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

要解决该问题,请不要返回List。返回Array或某种Java类型。

2

斯卡拉的问题之一是它缺乏不同版本之间的二进制兼容性。 要么使用与原始Jar编译相同的库版本,要么重新编译Jar(如果这是一个选项)。

0

您是否启用JDT Weaving?转到首选项 - > JDT编织找出。如果它被禁用,那么你的IDE可能会有莫名其妙的错误。

+0

我启用了JDT编织。所以这不是因为这个。我认为问题是在Java代码中返回并使用Scala'List'类型。当我将'List'更改为'Array'时,问题就消失了,它与Java数组相同。 – Jus12 2011-07-05 13:09:39

相关问题