Open Firefox on Windows using Appium and RemotewebDriver

I am currently trying to open a firefox on Windows using following code:
//selenium 3.4
//firefox 53.0
//gecko 0.16
//java client 5.0.0 Beta 9

System.setProperty(“webdriver.gecko.driver”, “D:\geckodriver.exe”);
DesiredCapabilities oCap = DesiredCapabilities.firefox(); oCap.setBrowserName(“firefox”);
oCap.setCapability(“firefox_binary”, “C:\Program Files\Mozilla Firefox\firefox.exe” );
FirefoxProfile prof = new FirefoxProfile();
prof.setPreference(“dom.disable_open_during_load”, false);
oCap.setCapability(FirefoxDriver.PROFILE, prof);
URL sURL = new URL(“http://localhost:5555/wd/hub”);
oCap.setCapability(“platformname”,“WINDOWS”);
AppiumDriver driver = (AppiumDriver) new RemoteWebDriver(sURL, oCap);

But i am getting following error:
Exception in thread “main” org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: ‘3.4.0’, revision: ‘unknown’, time: ‘unknown’
System info: host: ‘INNOSZPC00536’, ip: ‘192.168.99.1’, os.name: ‘Windows 8.1’, os.arch: ‘x86’, os.version: ‘6.3’, java.version: ‘1.8.0_25’
Driver info: driver.version: AppiumDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:137)
at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:88)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:112)
at com.automatics.packages.library.testAppium.main(testAppium.java:49)
Caused by: java.lang.NumberFormatException: For input string: “.0”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.math.BigInteger.(Unknown Source)
at java.math.BigInteger.(Unknown Source)
at com.google.gson.internal.LazilyParsedNumber.longValue(LazilyParsedNumber.java:51)
at com.google.gson.JsonPrimitive.getAsLong(JsonPrimitive.java:233)
at org.openqa.selenium.remote.JsonToBeanConverter.convertJsonPrimitive(JsonToBeanConverter.java:248)
at org.openqa.selenium.remote.JsonToBeanConverter.convert(JsonToBeanConverter.java:79)
at org.openqa.selenium.remote.JsonToBeanConverter.convertMap(JsonToBeanConverter.java:345)
at org.openqa.selenium.remote.JsonToBeanConverter.convert(JsonToBeanConverter.java:222)
at org.openqa.selenium.remote.JsonToBeanConverter.convertMap(JsonToBeanConverter.java:345)
at org.openqa.selenium.remote.JsonToBeanConverter.convert(JsonToBeanConverter.java:222)
at org.openqa.selenium.remote.JsonToBeanConverter.convertMap(JsonToBeanConverter.java:345)
at org.openqa.selenium.remote.JsonToBeanConverter.convert(JsonToBeanConverter.java:218)
at org.openqa.selenium.remote.JsonToBeanConverter.convert(JsonToBeanConverter.java:47)
at io.appium.java_client.remote.AppiumProtocolHandShake.createSession(AppiumProtocolHandShake.java:119)
at io.appium.java_client.remote.AppiumProtocolHandShake.createSession(AppiumProtocolHandShake.java:76)
at io.appium.java_client.remote.AppiumCommandExecutor.doExecute(AppiumCommandExecutor.java:111)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:162)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
… 9 more

Its working fine when I declare WebDriver instead of AppiumDriver… requirement is to use AppiumDriver for both windows and mobile.