bdd-security icon indicating copy to clipboard operation
bdd-security copied to clipboard

java.lang.UnsatisfiedLinkError when using chromedriver

Open twelvesec opened this issue 8 years ago • 4 comments

Hi,

I get this exception at the end of every gradle build when using chromedriver (tried both old and new version): java.lang.UnsatisfiedLinkError: Can't obtain updateLastError method for class com.sun.jna.Native.

I am running under:

  • Windows 7 (64-bit)
  • JDK 1.8.0_121
  • Chrome 48 & 56

Update: The problem persists even when using 32-bit JVM and 32-bit Chrome versions.

I think it has to do with selenium WebDriver's quit() method.

The full stacktrace:

java.lang.UnsatisfiedLinkError: Can't obtain updateLastError method for class com.sun.jna.Native
	at com.sun.jna.Native.initIDs(Native Method)
	at com.sun.jna.Native.<clinit>(Native.java:139)
	at org.openqa.selenium.os.Kernel32.<clinit>(Kernel32.java:34)
	at org.openqa.selenium.os.ProcessUtils.killWinProcess(ProcessUtils.java:133)
	at org.openqa.selenium.os.ProcessUtils.killProcess(ProcessUtils.java:81)
	at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.destroyHarder(UnixProcess.java:247)
	at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.access$200(UnixProcess.java:201)
	at org.openqa.selenium.os.UnixProcess.destroy(UnixProcess.java:125)
	at org.openqa.selenium.os.CommandLine.destroy(CommandLine.java:155)
	at org.openqa.selenium.remote.service.DriverService.stop(DriverService.java:196)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:94)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:701)
	at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:526)
	at net.continuumsecurity.web.drivers.DriverFactory.quitAll(DriverFactory.java:80)
	at net.continuumsecurity.junit.SecurityTest.tearDown(SecurityTest.java:23)
	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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at cucumber.api.junit.Cucumber.run(Cucumber.java:98)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:105)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:56)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:64)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:50)
	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.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
	at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:106)
	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.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
	at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

twelvesec avatar Feb 08 '17 21:02 twelvesec

This has been reported on another Selenium based framework too: https://groups.google.com/forum/#!topic/thucydides-users/m6akVHfqY5A Could you try upgrading JVM?

stephendv1 avatar Mar 13 '17 12:03 stephendv1

I'm having this issue with JDK 10.0.2

theotherp avatar Aug 14 '18 04:08 theotherp

Could you check that you're using 64 bit versions of everything: OS, Jvm, Chrome-driver

stephendv1 avatar Aug 14 '18 07:08 stephendv1

I have Windows 10 64 Bit. https://chromedriver.storage.googleapis.com/index.html?path=2.41/ doesn't provide a 64Bit version for Windows. JRE 10 only is only available as 64Bit for Windows.

theotherp avatar Aug 14 '18 10:08 theotherp