У меня есть зависимость:
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.10</version>
</dependency>
И запустите тест, который включает тестирование веб-сайта для отправки формы. Прекрасно работает. Я упакую это в свою локальную mvn install
repo mvn install
и включаю ее в другой более широкий проект.
Выполнение mvn dependency:tree -Dverbose -Dincludes=net.sourceforge.htmlunit
, похоже, не обнаруживает ничего неблагоприятного
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ myproject ---
[INFO] com.myproject:myproject:war:1.0-SNAPSHOT
[INFO] \- com.myproject:myproject:mp:jar:1.0:compile
[INFO] \- net.sourceforge.htmlunit:htmlunit:jar:2.10:compile
[INFO] \- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.10:compile
Поэтому я не думаю, что какой-либо из других депов вызывает проблему. Однако, если я копирую/вставляю тест из базового проекта в более широкий, я всегда получаю ошибки:
java.lang.NoSuchMethodError: com.gargoylesoftware.htmlunit.html.HtmlPage.getElementById(Ljava/lang/String;)Lcom/gargoylesoftware/htmlunit/html/HtmlElement;
Я убедился, что моя IDE не кэширует какую-то изворотливую библиотеку где-нибудь, насколько я могу сказать, что она чиста. Есть идеи?
благодаря
Проблема в том, что у вас есть этот класс, исходящий из какого-то другого артефакта, так как вы подтвердили, что он напрямую не идет из htmlunit с другой версией, он должен быть затенен в какой-нибудь другой банке
для jvm, чтобы получить правильный класс, поставьте зависимость htmlunit на верхнюю часть зависимости, чтобы она была первой в classpath с приоритетом
mvn dependency:tree -Dincludes="com.google.gwt:gwt-dev"
?