Maven-java.lang.NoSuchFieldError:使用Appium进行测试时的INSTANCE

时间:2015-09-02 11:09:38

标签: maven appium

我有Maven项目,用Appium测试一些移动应用程序。当我尝试从mvn test -Dtest=AppiumTest运行时,我得到低于异常

enter image description here

下面是我的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);

2 个答案:

答案 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/resolving-conflicts-using-the-dependency-tree.html

https://maven.apache.org/plugins/maven-dependency-plugin/examples/filtering-the-dependency-tree.html