Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoSuchMethodError com.google.common.collect.Sets.toImmutableEnumSet #552

Closed
mbarakacart opened this issue Aug 24, 2022 · 11 comments
Closed

Comments

@mbarakacart
Copy link

Hello.
I am trying to test Paparazzi with Azul Zulu 18 and I found that I can make it work with the Snapshot version and not 1.0.0, however currently I am facing another issue as you can see below.
I am happy to provide more info if needed.
Thanks in advance

java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.Sets.toImmutableEnumSet()'
	at com.android.resources.ResourceType.<clinit>(ResourceType.java:168)
	at app.cash.paparazzi.internal.PaparazziCallback.initResources(PaparazziCallback.kt:64)
	at app.cash.paparazzi.Paparazzi.prepare(Paparazzi.kt:148)
	at app.cash.paparazzi.Paparazzi$apply$statement$1.evaluate(Paparazzi.kt:118)
	at app.cash.paparazzi.agent.AgentTestRule$apply$1.evaluate(AgentTestRule.kt:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:577)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
@jrodbx
Copy link
Collaborator

jrodbx commented Sep 5, 2022

Please provide more info, ideally via a repro/sample.

@mbarakacart
Copy link
Author

mbarakacart commented Sep 6, 2022

Hello.
Sorry it took me a while to create a sample, and I think I found the problem.
It seems the issue is forcing com.google.guava:guava:30.1.1-android while I believe you are using version 31.0.1-jre.
I will close the issue. Thanks

@benwicks
Copy link

benwicks commented Oct 26, 2022

I have this issue too but forcing guava 31 jre didn't fix it. Paparazzi Version 1.1.0. This is the stack trace I get:

java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.Sets.toImmutableEnumSet()'
	at com.android.resources.ResourceType.<clinit>(ResourceType.java:168)
	at app.cash.paparazzi.internal.DynamicResourceIdManager$IdProvider.<init>(DynamicResourceIdManager.kt:14)
	at app.cash.paparazzi.internal.DynamicResourceIdManager.<init>(DynamicResourceIdManager.kt:28)
	at app.cash.paparazzi.internal.PaparazziCallback.<init>(PaparazziCallback.kt:53)
	at app.cash.paparazzi.Paparazzi.prepare(Paparazzi.kt:150)
	at app.cash.paparazzi.Paparazzi$apply$statement$1.evaluate(Paparazzi.kt:121)
	at app.cash.paparazzi.agent.AgentTestRule$apply$1.evaluate(AgentTestRule.kt:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)

@mbarakacart
Copy link
Author

I have this issue too but forcing guava 31 didn't fix it. Paparazzi Version 1.1.0. This is the stack trace I get:

I was using a SNAPSHOT version and not 1.1.0, looking into Paparazzi code it seems it still using version 31.0.1-jre. try to check that that guava version is included in your external libraries

Screen Shot 2022-10-26 at 5 32 20 PM

@ashley-figueira
Copy link

I am getting the following error:

java.lang.NoSuchMethodError: 'int[] android.util.StateSet.get(int)'
	at android.view.View.<clinit>(View.java:2258)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:377)
	at app.cash.paparazzi.Paparazzi.registerViewEditModeInterception(Paparazzi.kt:534)
	at app.cash.paparazzi.Paparazzi.apply(Paparazzi.kt:128)

Have no idea how to fix it. Any help?

@mbarakacart
Copy link
Author

I am getting the following error:

java.lang.NoSuchMethodError: 'int[] android.util.StateSet.get(int)'
	at android.view.View.<clinit>(View.java:2258)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:377)
	at app.cash.paparazzi.Paparazzi.registerViewEditModeInterception(Paparazzi.kt:534)
	at app.cash.paparazzi.Paparazzi.apply(Paparazzi.kt:128)

Have no idea how to fix it. Any help?

I would track the library and its version that has that and compare it to the one used in Paparazzi, it is probably some mismatch versions.

I found it helpful to create custom Paparazzi version like below to ensure it is running on same device, a version of API that CI has downloaded

        private val androidVersion = 31
        fun create(): PapUtils {
            val paparazzi = Paparazzi(
                deviceConfig = DeviceConfig.PIXEL_5
                    .copy(
                        nightMode = NightMode.NOTNIGHT, //light theme
                        fontScale = 1f, // can be used to test accessibility font size
                    )
                ,
                theme = "android:Theme.AppCompat",
                environment = detectEnvironment().copy(
                    platformDir = "${androidHome()}/platforms/android-${androidVersion}",
                    compileSdkVersion = androidVersion
                ),
                renderingMode = SessionParams.RenderingMode.NORMAL,
                // ...see docs for more options
            )
            return PapUtils(paparazzi)
        }
    }

@ZacSweers
Copy link
Contributor

We're seeing this issue now when updating Guava to 32.1.2-jre

@TWiStErRob
Copy link
Contributor

#906 might be related and hopefully could help.

@ZacSweers
Copy link
Contributor

I don't think that issue is correct, commented there

@TWiStErRob
Copy link
Contributor

Ah! I think there are two distinct issues in this conversation:

  • toImmutableEnumSet: This issue's OP and until October 2022, and my linked issue.
  • StateSet: this issue from February 2023 onwards
    @ashley-figueira (or @ZacSweers), do you have a repro for this one?

@ZacSweers which one did you refer to in #552 (comment)? (Based on your response I guess the second one.)

@ZacSweers
Copy link
Contributor

I'm referring to the first one, hence why I commented on this one :)

Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoSuchMethodError: 'java.util.stream.Collector com.google.common.collect.Sets.toImmutableEnumSet()' [in thread "Test worker"]
	at com.android.resources.ResourceType.<clinit>(ResourceType.java:175)
	... 39 more

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants