2011-06-06 65 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

相關問題