"Access Denied" when instantiating inline mock maker

370 views
Skip to first unread message

Thomas Keller

unread,
May 5, 2020, 4:41:12 PM5/5/20
to mockito
Hi all!

This issue was reproduced with Mockito 3.1.0 as well as 3.3.3 and only happens when I run my tests from the Gradle command line (`./gradlew module:testDebug --no-daemon`), but not inside the IDE (Android Studio).

It seems as if the `IOException` that is thrown was mentioned once here (https://stackoverflow.com/a/1604118/305532), but https://github.com/mockito/mockito/blob/v3.1.0/src/main/java/org/mockito/internal/creation/bytebuddy/InlineByteBuddyMockMaker.java#L111 only contains a single FS-relevant call, so I don't see the issue.

Has anybody an idea what's going on here?

Thanks in advance,
Thomas.

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
 at org
.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:74)
 at com
.sun.proxy.$Proxy12.isTypeMockable(Unknown Source)
 at org
.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
 at org
.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
 at org
.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:238)
 at org
.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:226)
 at org
.mockito.internal.MockitoCore.mock(MockitoCore.java:68)
 at org
.mockito.Mockito.mock(Mockito.java:1895)
 at
MyTestCase.<init>(MyTestCase.kt:116)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java
.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at org
.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)
 at org
.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
 at org
.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 at org
.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
 at org
.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
 at org
.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
 at org
.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
 at org
.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
 at org
.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
 at org
.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
 at org
.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
 at org
.junit.runners.ParentRunner.run(ParentRunner.java:363)
 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 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
.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 com
.sun.proxy.$Proxy2.processTestClass(Unknown Source)
 at org
.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
 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
.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
 at org
.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
 at org
.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
 at org
.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
 at org
.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
 at org
.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
 at org
.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
 at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at org
.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
 at java
.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in sun.misc.CompoundEnumeration@4b271a3
 at org
.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:54)
 at org
.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:57)
 at org
.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:44)
 at org
.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:21)
 at org
.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:18)
 at org
.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24)
 
... 52 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker. (This mock maker is not supported on Android.)


Java               : 1.8
JVM vendor name    
: Oracle Corporation
JVM vendor version
: 25.231-b11
JVM name          
: Java HotSpot(TM) 64-Bit Server VM
JVM version        
: 1.8.0_231-b11
JVM info          
: mixed mode
OS name            
: Windows 10
OS version        
: 10.0


 at org
.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:171)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java
.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at java
.lang.Class.newInstance(Class.java:442)
 at org
.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:49)
 
... 57 more
Caused by: java.lang.IllegalStateException:
Mockito could not self-attach a Java agent to the current VM. This feature is required for inline mocking.
This error occured due to an I/O error during the creation of this agent: java.io.IOException: Access Denied


Potentially, the current VM does not support the instrumentation API correctly
 at org
.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<clinit>(InlineByteBuddyMockMaker.java:151)
 
... 63 more
Caused by: java.io.IOException: Access Denied
 at java
.io.WinNTFileSystem.createFileExclusively(Native Method)
 at java
.io.File.createTempFile(File.java:2024)
 at java
.io.File.createTempFile(File.java:2070)
 at org
.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<clinit>(InlineByteBuddyMockMaker.java:108)
 
... 63 more



Michael Pinnegar

unread,
May 5, 2020, 8:31:38 PM5/5/20
to moc...@googlegroups.com
I would validate what Java runtime your tests are running under. I suspect intellji is providing one that's different from your nacenet build environment and you can fix it by aligning on the intellji vm.





--
You received this message because you are subscribed to the Google Groups "mockito" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mockito+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mockito/73cb22c3-87d5-466b-89c9-5fc2b44fadf1%40googlegroups.com.

Thomas Keller

unread,
May 12, 2020, 6:25:36 AM5/12/20
to mockito
Ok, I could fix the issue otherwise. Due to a build configuration issue the environment in which the tests ran (configured through `android.defaultConfig.testOptions.unitTests.all.environment`) was accidentally cleared, which lead to the above unrelated-looking stacktrace. It was actually not a JVM issue.

Thomas.
To unsubscribe from this group and stop receiving emails from it, send an email to moc...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages