You might have some setup issues, revise your setup. Node Instalation and configuration, Java_home and everything else.
Here is my implementation. I;m just calling the startServer method in @BeforeSuite and stopServer in @AfterSuite.
APPIUM_PORT and LOG_LEVEL are constants defined in .properties file. Replace it with 4723 and error/debug/info
private static AppiumDriverLocalService service;
private static Logger log = LogManager.getLogger(AppiumSetup.class.getName());
public static void startServer(){
AppiumServiceBuilder builder;
log.info("Building and starting the server:");
builder = new AppiumServiceBuilder();
builder.usingPort(APPIUM_PORT);
builder.withCapabilities(capabilities);
builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
builder.withArgument(GeneralServerFlag.LOG_LEVEL, LogLevel);
service = AppiumDriverLocalService.buildService(builder);
service.start();
log.info("Server started on Port - " + APPIUM_PORT);
}
public static void stopServer() {
try {
log.info("Trying to stop the server...");
service.stop();
log.info("Success, Server stopped.");
} catch (Exception e) {
log.info("Appium server could not be stopped.");
}
}