У меня проблема с совместимостью с Scala и Java, которые Google и SO кажутся бесполезными (я видел похожие вопросы, но ни один из них не предлагал рабочего решения для моего случая).Не удается получить доступ к статическому методу Java из Scala
Я создал файл jar на Java (размещен 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 являются одинаковыми. И я также проверил, действительно ли метод существует с javap
.
Есть ли идея, чтобы понять и, возможно, решить эту проблему?
Какая ошибка? – smk
Он выдает две ошибки: «ошибка при загрузке DirectedGraph, файл класса« fetchers.jar (pt/remoteowl/objects/DirectedGraph.class) »(класс scala.MatchError/class DirectedGraph (из класса scala.reflect.internal.Symbols $ ClassSymbol)) 'и' value merge не является членом объекта pt.remoteowl.objects.DirectedGraph' – jdferreira
Было бы полезно узнать, какую точную версию Scala вы используете, поскольку «файл класса X сломан» имел различные причины в разных версиях. –