Appium Maven Project unable to run to real device

i was writing scriptss on appium as an eclipse maven project.While trying to run the script using TESTNg to a connected mobile device… getting the following error

The version used are: Wnindows 8.1 JDK 9.0.4 JRE 9.0.4 Appium :1.4.16 Java Client:5.0.4 Eclipse :OXygen

org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: ‘java -version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”
The system cannot find the path specified.
java version “9.0.4”
Java™ SE Runtime Environment (build 9.0.4+11)
Java HotSpot™ 64-Bit Server VM (build 9.0.4+11, mixed mode)
) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.13 seconds
Build info: version: ‘3.11.0’, revision: ‘e59cfb3’, time: ‘2018-03-11T20:33:08.638Z’
System info: host: ‘CEREBTECH’, ip: ‘192.168.57.1’, os.name: ‘Windows 8.1’, os.arch: ‘amd64’, os.version: ‘6.3’, java.version: ‘9.0.4’
Driver info: driver.version: AndroidDriver
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.findFirst(Unknown Source)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
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:209)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:132)
at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:83)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:93)
at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:72)
at lotzaTesting.LotzaBase.createAppiumDriver(LotzaBase.java:43)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
at org.testng.TestRunner.beforeRun(TestRunner.java:529)
at org.testng.TestRunner.run(TestRunner.java:497)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

Do you have Android SDK path and Java path set as Path variable under System Environment variable ?

1 Like

Already set ANDROID_HOME,
JAVA_HOME AND PATH

Could you post your Appium logs. I might try to figure out by comparing with my setup

Thanks
Saurabh

> info: --> POST /wd/hub/session {"desiredCapabilities":{"appActivity":"com.*********","appPackage":"com.*******","browserName":"Android","deviceName":"0123456789ABCDEF","platformName":"Android","resetkeyboard":true,"unicodekeyboard":true,"version":"5.0"},"capabilities":{"desiredCapabilities":{"appActivity":"com.*****,"appPackage":"com.****","browserName":"Android","deviceName":"0123456789ABCDEF","platformName":"Android","resetkeyboard":true,"unicodekeyboard":true,"version":"5.0"},"firstMatch":[{"browserName":"Android","platformName":"android"}]}}
> info: Client User-Agent string: Apache-HttpClient/4.5.3 (Java/9.0.4)
> info: [debug] The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : resetkeyboard, unicodekeyboard, version
> info: [debug] Didn't get app but did get Android package, will attempt to launch it on the device
> info: [debug] Creating new appium session 6380b7d1-6957-426b-becd-dbf08f1dbb88
> info: Starting android appium
> info: [debug] Getting Java version
> error: Failed to start an Appium session, err was: Error: 'java -version' failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c "java -version"
> The system cannot find the path specified.
> java version "9.0.4"
> Java(TM) SE Runtime Environment (build 9.0.4+11)
> Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
> 
> info: [debug] Cleaning up android objects
> info: [debug] Cleaning up appium session
> info: [debug] Error: 'java -version' failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c "java -version"
> The system cannot find the path specified.
> java version "9.0.4"
> Java(TM) SE Runtime Environment (build 9.0.4+11)
> Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
> 
>     at [object Object].<anonymous> (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:1057:17)
>     at ChildProcess.exithandler (child_process.js:758:5)
>     at ChildProcess.emit (events.js:110:17)
>     at maybeClose (child_process.js:1016:16)
>     at Socket.<anonymous> (child_process.js:1184:11)
>     at Socket.emit (events.js:107:17)
>     at Pipe.close (net.js:484:11)
> info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: 'java -version' failed. Error: Command failed: C:\\Windows\\system32\\cmd.exe /s /c \"java -version\"\nThe system cannot find the path specified.\r\njava version \"9.0.4\"\r\nJava(TM) SE Runtime Environment (build 9.0.4+11)\r\nJava HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)\r\n)","origValue":"'java -version' failed. Error: Command failed: C:\\Windows\\system32\\cmd.exe /s /c \"java -version\"\nThe system cannot find the path specified.\r\njava version \"9.0.4\"\r\nJava(TM) SE Runtime Environment (build 9.0.4+11)\r\nJava HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)\r\n"},"sessionId":null}
> info: <-- POST /wd/hub/session 500 1001.831 ms - 708

Add JAVA_HOME to path in environment variable.

This is how i set my environment variables,but still it is not working

User Variables.
ANDROID_HOME C:\Users\Manish\AppData\Local\Android\sdk
JAVA_HOME C:\Program Files\Java\jdk-9.0.4

System Variables
ANDROID_HOME C:\Users\Manish\AppData\Local\Android\sdk
JAVA_HOME C:\Program Files\Java\jdk-9.0.4
PATH C:\Program Files\Apache Software Foundation\apache-maven-3.5.0\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Java\jdk-9.0.4\bin;C:\Users\Manish\AppData\Local\Android\sdk\tools;C:\Users\Manish\AppData\Local\Android\sdk\platform-tools

Can you try it again after downgrading to java8?

Not fixed.degraded to java 8 and updated my environment variables as,

User Variables.
ANDROID_HOME C:\Users\Manish\AppData\Local\Android\sdk
JAVA_HOME C:\Program Files\Java\jdk1.8.0_111

System Variables
ANDROID_HOME C:\Users\Manish\AppData\Local\Android\sdk
JAVA_HOME C:\Program Files\Java\jdk-9.0.4
PATH C:\Program Files\Apache Software Foundation\apache-maven-3.5.0\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Java\jdk1.8.0_111\bin;C:\Users\Manish\AppData\Local\Android\sdk\tools;C:\Users\Manish\AppData\Local\Android\sdk\platform-tools

Can you please change the java home @ system variable to java 8 and also please include the jre\bin to PATH as well

i was getting the same result

  1. within the appium logs is it showing as java 8?
  2. Try to run with only one device (real or emulated) connected. Sometimes it has problems with two?

variables looks fine, what do you get when you type java --version on command line manually.

java -version

C:\Users\Manish>java -version
java version “1.8.0_152”
Java™ SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot™ 64-Bit Server VM (build 25.152-b16, mixed mode)

java --version
C:\Users\Manish>java --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

@babu_shaik
> Launching Appium server with command: C:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 21 --automation-name Appium --device-name “0123456789ABCDEF” --log-no-color
> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
> info: Appium REST http interface listener started on 127.0.0.1:4723
> info: [debug] Non-default server args: {“address”:“127.0.0.1”,“logNoColors”:true,“deviceName”:“0123456789ABCDEF”,“platformName”:“Android”,“platformVersion”:“21”,“automationName”:“Appium”}
> info: Console LogLevel: debug
> info: --> POST /wd/hub/session {“desiredCapabilities”:{“appActivity”:“com.******.LoginActivity”,“appPackage”:“com.**",“browserName”:“Android”,“deviceName”:“0123456789ABCDEF”,“platformName”:“Android”,“resetkeyboard”:true,“unicodekeyboard”:true,“version”:“5.0”},“capabilities”:{“desiredCapabilities”:{“appActivity”:"com.”,“appPackage”:“com.******”,“browserName”:“Android”,“deviceName”:“0123456789ABCDEF”,“platformName”:“Android”,“resetkeyboard”:true,“unicodekeyboard”:true,“version”:“5.0”},“firstMatch”:[{“browserName”:“Android”,“platformName”:“android”}]}}
> info: Client User-Agent string: Apache-HttpClient/4.5.3 (Java/1.8.0_152)
> info: [debug] The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : resetkeyboard, unicodekeyboard, version
> info: [debug] Didn’t get app but did get Android package, will attempt to launch it on the device
> info: [debug] Creating new appium session a2fd28bd-329a-40fc-a7e1-8bef892664cd
> info: Starting android appium
> info: [debug] Getting Java version
> info: [debug] Cleaning up android objects
> info: [debug] Cleaning up appium session
> error: Failed to start an Appium session, err was: Error: ‘java -version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”
> The system cannot find the path specified.
> java version “1.8.0_152”
> Java™ SE Runtime Environment (build 1.8.0_152-b16)
> Java HotSpot™ 64-Bit Server VM (build 25.152-b16, mixed mode)
>
> info: [debug] Error: ‘java -version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”
> The system cannot find the path specified.
> java version “1.8.0_152”
> Java™ SE Runtime Environment (build 1.8.0_152-b16)
> Java HotSpot™ 64-Bit Server VM (build 25.152-b16, mixed mode)
>
> at [object Object]. (C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-common.js:1057:17)
> at ChildProcess.exithandler (child_process.js:758:5)
> at ChildProcess.emit (events.js:110:17)
> at maybeClose (child_process.js:1016:16)
> at Socket. (child_process.js:1184:11)
> at Socket.emit (events.js:107:17)
> at Pipe.close (net.js:484:11)
> info: [debug] Responding to client with error: {“status”:33,“value”:{“message”:“A new session could not be created. (Original error: ‘java -version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”\nThe system cannot find the path specified.\r\njava version “1.8.0_152”\r\nJava™ SE Runtime Environment (build 1.8.0_152-b16)\r\nJava HotSpot™ 64-Bit Server VM (build 25.152-b16, mixed mode)\r\n)”,“origValue”:"‘java -version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”\nThe system cannot find the path specified.\r\njava version “1.8.0_152”\r\nJava™ SE Runtime Environment (build 1.8.0_152-b16)\r\nJava HotSpot™ 64-Bit Server VM (build 25.152-b16, mixed mode)\r\n"},“sessionId”:null}
> info: <-- POST /wd/hub/session 500 508.504 ms - 730

Try adding %SystemRoot%\system32;%SystemRoot% to your PATH

@matias still getting the same issue, the path i set is
C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Apache Software Foundation\apache-maven-3.5.0\bin;C:\Program Files\Java\jdk1.8.0_152\bin;C:\Users\Manish\AppData\Local\Android\sdk\tools;C:\Users\Manish\AppData\Local\Android\sdk\platform-tools;C:\Program Files\Java\jdk1.8.0_152;%SystemRoot%\system32;%SystemRoot%

check this link if it helps

getting the same error