2014-10-22 3 views
1

я получил java.lang.NoSuchMethodError после создания своего первого проекта appium код прост, он терпит неудачу на этой линии:NoSuchMethodError в appium

driver = new AppiumDriver(new URL("http://x.x.x.x:4723/wd/hub"), capabilities); 

трассировка:

java.lang.NoSuchMethodError: com.google.common.base.Joiner$MapJoiner.appendTo(Ljava/lang/StringBuilder;Ljava/lang/Iterable;)Ljava/lang/StringBuilder; 
    at com.google.common.net.MediaType.toString(MediaType.java:674) 
    at org.openqa.selenium.remote.http.JsonHttpCommandCodec.encode(JsonHttpCommandCodec.java:197) 
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:152) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572) 

мой pom.xml это:

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>LATEST</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>io.appium</groupId> 
     <artifactId>java-client</artifactId> 
     <version>1.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.6</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Includes the Sauce JUnit helper libraries 
    <dependency> 
     <groupId>com.saucelabs</groupId> 
     <artifactId>sauce_junit</artifactId> 
     <version>1.0.18</version> 
     <scope>test</scope> 
    </dependency>--> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.2.4</version> 
    </dependency> 
</dependencies> 

У меня есть google, а некоторые говорят, что я использую более старую guava .jar, но я разложил guava-15.0.jar и нашел Joiner.appendTo (StringBuilder, Iterable), почему он всегда показывает эту ошибку?

@Before 
    public void setUp() throws Exception { 
    // set up appium 
    final File classpathRoot = new File(System.getProperty("user.dir")); 
    final File appDir = new File(classpathRoot, "../../../apps/ContactManager"); 
    final File app = new File(appDir, "ContactManager.apk"); 
    final DesiredCapabilities capabilities = new DesiredCapabilities(); 
    capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); 
    capabilities.setCapability("platformName", "Android"); 
    capabilities.setCapability("deviceName", "Android Emulator"); 
    capabilities.setCapability("platformVersion", "4.4"); 
    capabilities.setCapability("app", app.getAbsolutePath()); 
    capabilities.setCapability("appPackage", 
     "com.example.android.contactmanager"); 
    capabilities.setCapability("appActivity", ".ContactManager"); 
    driver = new AndroidDriver(new URL("http://x.x.x.x:4723/wd/hub"), 
     capabilities); 
    } 

также после выполнения команды «МВН -U чистый тест», я могу видеть эту ошибку

Tests in error:   
addContact(com.saucelabs.appium.AndroidContactsTest):com.google.common.base.Joiner$MapJoiner.appendTo(Ljava/lang/StringBuilder;Ljava/lang/Iterable;)Ljava/lang/StringBuilder; 
addContact(com.saucelabs.appium.AndroidContactsTest) 
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0 

Там только один тест, имя которого addContact, почему это продолжать показ Тестовый прогон: 2? через отладку, я обнаружил, что это происходит при запуске этого предложения «driver.quit()», после удаления этого метода он показывает тестовый запуск: 1

Дерево зависимостей - это список ниже, я ничего не вижу о MapJoiner, кроме гуавы-17,0, на самом деле я могу найти MapJoiner.appendTo (StringBuilder, итерацию <>) в этом банке файл

[INFO] com.lvntest.appium:sauce_appium_junit:jar:0.0.1-SNAPSHOT 
[INFO] +- junit:junit:jar:4.11:test 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:2.43.1:test 
[INFO] | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.43.1:test 
[INFO] | | \- org.seleniumhq.selenium:selenium-remote-driver:jar:2.43.1:test 
[INFO] | |  +- cglib:cglib-nodep:jar:2.1_3:test 
[INFO] | |  \- org.seleniumhq.selenium:selenium-api:jar:2.43.1:test 
[INFO] | +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.43.1:test 
[INFO] | | \- net.sourceforge.htmlunit:htmlunit:jar:2.15:test 
[INFO] | |  +- xalan:xalan:jar:2.7.1:test 
[INFO] | |  | \- xalan:serializer:jar:2.7.1:test 
[INFO] | |  +- commons-collections:commons-collections:jar:3.2.1:test 
[INFO] | |  +- org.apache.commons:commons-lang3:jar:3.3.2:test 
[INFO] | |  +- org.apache.httpcomponents:httpmime:jar:4.3.3:test 
[INFO] | |  +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.15:test 
[INFO] | |  +- xerces:xercesImpl:jar:2.11.0:test 
[INFO] | |  | \- xml-apis:xml-apis:jar:1.4.01:test 
[INFO] | |  +- net.sourceforge.nekohtml:nekohtml:jar:1.9.21:test 
[INFO] | |  +- net.sourceforge.cssparser:cssparser:jar:0.9.14:test 
[INFO] | |  | \- org.w3c.css:sac:jar:1.3:test 
[INFO] | |  \- org.eclipse.jetty:jetty-websocket:jar:8.1.15.v20140411:test 
[INFO] | |  +- org.eclipse.jetty:jetty-util:jar:8.1.15.v20140411:test 
[INFO] | |  +- org.eclipse.jetty:jetty-io:jar:8.1.15.v20140411:test 
[INFO] | |  \- org.eclipse.jetty:jetty-http:jar:8.1.15.v20140411:test 
[INFO] | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.43.1:test 
[INFO] | | +- commons-io:commons-io:jar:2.4:test 
[INFO] | | \- org.apache.commons:commons-exec:jar:1.1:test 
[INFO] | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.43.1:test 
[INFO] | | +- net.java.dev.jna:jna:jar:3.4.0:test 
[INFO] | | \- net.java.dev.jna:platform:jar:3.4.0:test 
[INFO] | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.43.1:test 
[INFO] | +- org.seleniumhq.selenium:selenium-support:jar:2.43.1:test 
[INFO] | \- org.webbitserver:webbit:jar:0.4.15:test 
[INFO] |  \- io.netty:netty:jar:3.5.5.Final:test 
[INFO] +- io.appium:java-client:jar:2.0.0:compile 
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.3:compile 
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.2:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.1.3:compile 
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile 
[INFO] | +- com.google.guava:guava:jar:17.0:compile 
[INFO] | +- cglib:cglib:jar:3.1:compile 
[INFO] | | \- org.ow2.asm:asm:jar:4.2:compile 
[INFO] | \- org.reflections:reflections:jar:0.9.8:compile 
[INFO] |  +- javassist:javassist:jar:3.12.1.GA:compile 
[INFO] |  \- dom4j:dom4j:jar:1.6.1:compile 
[INFO] +- com.googlecode.json-simple:json-simple:jar:1.1.1:test 
[INFO] +- commons-lang:commons-lang:jar:2.6:test 
[INFO] +- com.saucelabs:sauce_junit:jar:2.1.10:compile 
[INFO] | +- com.saucelabs:sauce_java_common:jar:2.1.10:compile 
[INFO] | \- com.saucelabs:saucerest:jar:1.0.22:compile 
[INFO] |  \- org.json:json:jar:20090211:compile 
[INFO] \- com.google.code.gson:gson:jar:2.3:compile 
+0

трассировка стека указывает на проблему не в 'Joiner.appendTo', но в«Столяр $ MapJoiner.appendTo', то есть 'MapJoiner' вложенная класс' Joiner'. Вы подтвердили это? – RealSkeptic

+0

Да, метод существует, я так смущен ... кто-нибудь, пожалуйста, помогите com.google.common.base.Joiner $ MapJoiner.appendTo (java.lang.StringBuilder, java.lang.Iterable): java.lang.StringBuilder [9] –

ответ

1

Какую версию селена вы используете?

Корректировать pom.xml в одном из следующих способов ..

<dependency> 
     <groupId>io.appium</groupId> 
     <artifactId>java-client</artifactId> 
     <version>2.0.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>LATEST</version> 
    </dependency> 

Для вышеприведенного использования зависимостей AndroidDriver() вместо AppiumDriver() или используйте следующие с AppiumDriver()

<dependency> 
     <groupId>io.appium</groupId> 
     <artifactId>java-client</artifactId> 
     <version>1.5.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.42.2</version> 
    </dependency> 

Приветствия

+0

Я использую 2.0.0 java-клиент и последний селен, закрываю другой проект, только держу этот проект открытым и запускаю тест, но все равно получаю эту ошибку ... возможно, какая-то зависимость использует старую версию guava, но я не могу проверить его один за другим, так как нужно проверить около 20 файлов jar. как я должен ее решить? –

+0

Вы могли бы опубликовать свой код Java для инициализирующей части ... – Ram

+0

Спасибо за повторное воспроизведение. Я добавлю код установки. на самом деле, я просто git весь образец кода, и импортировать этот проект maven на eclipse, тогда появляется ошибка. –

Смежные вопросы