Intellij импортирует неправильный класс - PullRequest
2 голосов
/ 08 июля 2019

Я пытаюсь создать ссылку на стороннюю библиотеку (в файле jar) в Intellij Community 2019.1.Когда я собираю и запускаю свой проект, он завершается сбоем во время выполнения с сообщением:

"Exception in thread "main" java.lang.NoSuchMethodError".

Что происходит, если упомянутая библиотека имеет две зависимости, назовем их A.jar и B.jar.Оба они предоставляют класс с именем «Foo» с одинаковым путем к пакету, например acme.com.util.Foo.

Проблема в том, что класс Foo из A.jar реализует метод test(Class1 c), но тот же класс из пакетаB.jar реализует метод test(Class2 c).

Код (из сторонней библиотеки) имеет следующую сигнатуру вызова:

import acme.com.util
Class1 c = new Class1();
foo.test(c)

Поэтому теоретически IntelliJ должен разрешить его в пакет A.jar, но вместо этого код скомпилирован так, что во время выполнения он вызывает test(Class2 c) из пакета B.jar.Когда я нажимаю Ctrl по методу foo.test(c), это также приводит меня к реализации Foo внутри B.jar.Я пытался использовать разные компиляторы в IntellJ (как Javac, так и Eclipse), с тем же результатом.

Интересно, что при использовании Eclipse IDE проблема не возникает.Интересно, как это можно исправить или, может быть, есть способ убедить IntelliJ выбрать правильный пакет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...