2017-09-05 67 views
0

这发生在Eclipse中具有kotlin特性的Java和maven项目中。在Kotlin + Java项目中的Eclipse中编译时出错,但项目使用Maven编译

在这部分代码:

val faces = figure.getFaces()  
    for (polygon in faces) { 
     //... 

我得到以下Eclipse中的错误,其中faces,在上面的第二行,被标有红色下划线:

Cannot access class 'Polygon'. Check your module classpath for missing or conflicting dependencies 

该项目Java和Kotlin的混合体。 figure对象是Java类的一个实例,而faces是一组类型Polygon,它是在纯Kotlin的不同项目中(即Polygon是Kotlin类型,位于单独的Kotlin项目中)。

这个Kotlin项目其中Polygon是,的确是在类路径中作为Maven依赖项,实际上由其中figure是其中一个实例使用的Java类。

我认为问题出在Eclipse上,因为我可以用maven成功构建项目。它看起来像是在eclipse中的错误或配置问题。

我知道把Java和Kotlin混合起来很奇怪。我只是用Java开始这个项目,然后决定逐渐将它转换为Kotlin。到目前为止,我还没有遇到很多问题,但我知道,Eclipse中的Kotlin工具和支持还不成熟。

+0

您使用的是最新版本的Kotlin吗? Eclipse是否喜欢它,如果你使用PolygonKt而不是Polygon?如果这是问题,那么您需要更新您的Eclipse配置,以便它使用新版本的Kotlin进行语法检查/ intelliensing。 –

+0

eclipse的Kotlin插件尚未在几个月内更新。也许咬一口,并转换为IntelliJ这个项目。 – Strelok

+0

你可以从你的项目的主目录开始发布'Polygen'类的完整路径吗? – guenhter

回答

0

没有什么合适的解决方案:我将我的Figure类转换为Kotlin,问题消失了,但我可以这样做,因为我完全控制了我的项目。

可能较新版本的eclipse插件不会产生此错误,或者如注释中所示,切换到IntelliJ IDEA是另一种选择。