无法从Scala访问Java静态方法

时间:2013-12-19 18:33:06

标签: java scala scala-java-interop

我遇到了Scala和Java互操作性的问题,谷歌和SO似乎没有用(我见过类似的问题,但没有一个为我的案例提供了可行的解决方案)。

我用Java创建了一个jar文件(托管here,如果你需要它来回答这个问题),它包含一个带有静态方法的类。但是,我似乎无法从Scala访问此静态方法。这是代码:

val graph1 = ...
val graph2 = ...
val union = DirectedGraph.merge(graph1, graph2)

该方法存在,我可以使用普通的Java代码访问它。实际上,以下有效

DirectedGraph<OWLClass> graph1 = ...;
DirectedGraph<OWLClass> graph2 = ...;
DirectedGraph<OWLClass> union = DirectedGraph.merge(graph1, graph2);

我已经检查过java和scala使用的jar文件是否相同。我还检查了方法是否确实存在javap

有没有想法可以理解并可能解决这个问题?

1 个答案:

答案 0 :(得分:2)

最可能的原因(根据我的经验)是Java编译器将注释视为可选,因此如果您的某个依赖项使用注释并且没有包含此注释的依赖项,则编译没有问题。但是,Scala编译器认为这是一个错误。您可能需要查看DirectedGraph源及其超类型。

相关问题