简体   繁体   English

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet() 即使使用“com.google.guava:guava:24.0-android”

[英]java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet() even with 'com.google.guava:guava:24.0-android'

I am trying to launch an android application via appium and am getting this error.我正在尝试通过 appium 启动一个 android 应用程序,但出现此错误。 Details are as below:详情如下:

I have appium server setup on my mac machine.我在我的 mac 机器上安装了 appium 服务器。 It is launched for android and listening at 0.0.0.0:4723它为 android 启动并在 0.0.0.0:4723 收听

I am using Android Studio, gradle & testNG.我正在使用 Android Studio、gradle 和 testNG。

My build.gradle file within the app folder is as below:我在 app 文件夹中的 build.gradle 文件如下:

apply plugin: 'com.android.application'

android {
compileSdkVersion project.ext.myCompileSdkVersion
buildToolsVersion project.ext.myBuildToolsVersion

defaultConfig {
    applicationId "com.company.product.test_android_app"
    minSdkVersion project.ext.myMinSdkVersion
    targetSdkVersion project.ext.myTargetSdkVersion
    multiDexEnabled true

    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

lintOptions{
    abortOnError false
}

configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
}
}

dependencies {

testImplementation 'org.assertj:assertj-core:2.0.0'
testImplementation 'org.testng:testng:6.10'

implementation 'net.bytebuddy:byte-buddy-parent:1.7.9'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.google.guava:guava:24.0-android'

implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.6'
implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
implementation group: 'commons-logging', name: 'commons-logging', version: '1.2'
implementation group: 'org.apache.commons', name: 'commons-exec', version: '1.3'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
implementation group: 'commons-codec', name: 'commons-codec', version: '1.10'


testImplementation 'org.seleniumhq.selenium:selenium-java:3.0.1'
testImplementation 'io.appium:java-client:5.0.4'

testImplementation 'com.googlecode.json-simple:json-simple:1.1.1'
testImplementation group: 'com.google.http-client', name: 'google-http-client', version: '1.22.0'
testImplementation group: 'com.google.http-client', name: 'google-http-client-jackson2', version: '1.22.0'

implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'

androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

Issue at hand: - Application complies just fine.手头的问题: - 应用程序很好。 - On trying to run my test, I get the following error: - 在尝试运行我的测试时,出现以下错误:

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector;

at org.openqa.selenium.remote.ProtocolHandshake.streamW3CProtocolParameters(ProtocolHandshake.java:262)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:586)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:217)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:140)
at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:83)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:93)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:72)
at com.company.product.test_android_app.AndroidSetup.prepareAndroidForAppium(AndroidSetup.java:24)
at com.company.product.test_android_app.LaunchApp.setUp(LaunchApp.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:515)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:217)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:144)
at org.testng.TestRunner.beforeRun(TestRunner.java:634)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
Suppressed: java.io.IOException: Incomplete document
    at com.google.gson.stream.JsonWriter.close(JsonWriter.java:559)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:144)
    ... 41 more

What I have already tried: - I have already searched for this issue on stack overflow and many other websites.我已经尝试过的: - 我已经在堆栈溢出和许多其他网站上搜索过这个问题。 Everyone suggests to update the version of guava dependency but I already have the latest version.每个人都建议更新guava依赖的版本,但我已经有了最新版本。 Not sure what am I missing.不知道我错过了什么。 Kindly help.请帮忙。

Thanks in Advance :)提前致谢 :)

Try adding these rules to your proguard.尝试将这些规则添加到您的 proguard 中。

-dontwarn com.google.common.base.**
-keep class com.google.common.base.** {*;}
-dontwarn com.google.errorprone.annotations.**
-keep class com.google.errorprone.annotations.** {*;}
-dontwarn com.google.j2objc.annotations.**
-keep class com.google.j2objc.annotations.** { *; }
-dontwarn java.lang.ClassValue
-keep class java.lang.ClassValue { *; }
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-keep class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement { *; }

guava-android is specifically built for Java 7 compatibility. guava-android 专为兼容 Java 7 而构建。 It does not have collector methods or stream support.它没有收集器方法或流支持。

You probably could use normal Guava, not for Android, but it won't be particularly optimized for Android.您可能可以使用普通的 Guava,而不是针对 Android,但它不会针对 Android 进行特别优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Google通讯录-java.lang.NoSuchMethodError:com.google.common.collect.ImmutableSet.of([Ljava / lang / Object;)Lcom / google / common / collect / ImmutableSet; - Google Contacts - java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; java.lang.NoSuchMethodError:带有Selenium和Java的com.google.common.collect.ImmutableSet.of([Ljava / lang / Object;) - java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of([Ljava/lang/Object;) with Selenium and Java 缺少工件com.google.guava:guava:bundle:18.0 - Missing artifact com.google.guava:guava:bundle:18.0 JUnit抛出java.lang.NoSuchMethodError对于com.google.common.collect.Iterables.tryFind - JUnit throws java.lang.NoSuchMethodError For com.google.common.collect.Iterables.tryFind java.lang.NoSuchMethodError:com.google.common.collect.Sets.newConcurrentHashSet - java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet 卡夫卡连接 java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator; - Kafka Connect java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator; 泽西岛启动问题:java.lang.NoSuchMethodError:com.google.common.collect.Sets.newIdentityHashSet() - Jersey Startup Issue : java.lang.NoSuchMethodError: com.google.common.collect.Sets.newIdentityHashSet() java.lang.NoSuchMethodError:com.google.common.base.Preconditions - java.lang.NoSuchMethodError: com.google.common.base.Preconditions java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.ImmutableList.toImmutableList()' using Selenium Java - java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.ImmutableList.toImmutableList()' using Selenium Java ANDROID错误:java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState - ANDROID ERROR: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM