private File getNodeJsExecutableFile()
    {
        String nodePath = "";

        // Loading the properties for the Runnable objects
        // Or trying to create them
        String nodeExecutablePath = properties.getProperty("nodePath");
        File nodeExecutable = null;
        if (nodeExecutablePath != null) {
            nodeExecutable = new File(nodeExecutablePath);
        }

        if (nodeExecutable == null || !nodeExecutable.exists()) {
            // Trying to find the node.js executable without asking the user
            nodeExecutable = executableResolver.getFile();

            // Last resort
            // Prompting the user for the executable is not found
            if(nodeExecutable == null) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please provide the path to the node.js executable: ");
                try {
                    nodeExecutable = new File(reader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        if (nodeExecutable != null && nodeExecutable.exists()) {
            nodePath = nodeExecutable.getAbsolutePath();
        } else {
            nodeExecutable = null;
        }

        properties.setProperty("nodePath", nodePath);

        return nodeExecutable;
    }