我有Maven项目,用Appium测试一些移动应用程序。当我尝试从mvn test -Dtest=AppiumTest
运行时,我得到低于异常
下面是我的pom.xml依赖性:
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.2</version>
</dependency>
由于上述异常,配置失败,用@BeforeTest编写。 怎么解决?我正在创建Driver实例,如下所示:
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
答案 0 :(得分:1)
NoSuchFieldError:如果应用程序尝试访问或修改对象的指定字段,并且该对象不再具有该字段,则抛出该异常。 通常,编译器会捕获此错误;如果类的定义发生不兼容的更改,则此错误只能在运行时发生。
<强>解决方案:强> 如果您只是部分重新编译代码,则通常会抛出此错误。您已经获得了引用重新编译的类文件中不再存在的字段的旧代码。解决方案是清除所有类文件并从新编译所有内容。
如果在运行时仍然抛出错误,那么您可能使用一个版本的库进行编译,但在运行时使用另一个版本。您必须验证您的类路径是否包含指定库的正确版本。
也尝试使用:
{{1}}
答案 1 :(得分:0)
包含错误的类位于httpcore
库中,依赖于httpclient
。也许其他一些图书馆正在推出旧版本。
尝试添加到pom.xml
:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.2</version>
</dependency>
或以上版本。
您还可以使用命令查看maven依赖关系树,以查看项目使用的版本:
mvn dependency:tree -Dverbose -Dincludes=httpcore
在verbose
模式下,依赖关系树显示省略的依赖关系:是另一个的副本,与另一个版本和/或范围冲突,并在依赖关系树中引入一个循环。 / p>
https://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html