Здравствуйте. При попытке опубликовать с сайта игру Сапер выдает ошибку APP_PUBLISH_ERROR. Скрин с ошибкой - https://ibb.co/CvDvJrg. Также пробовал через IJ IDEA, тоже не публикует. Скрин - https://ibb.co/yNfjWrm. При попытке запустить игру с сайта также выдает ошибку APP_PUBLISH_ERROR. Скрин - https://ibb.co/jVZQ14K. При этом в IJ IDEA игра запускается. Просьба помочь. Заранее спасибо.
package com.javarush.games.minesweeper;


public class GameObject {

    public int x;
    public int y;
    public boolean isMine;
    public int countMineNeighbors;
    public boolean isOpen;
    public boolean isFlag;

    public GameObject(int x, int y, boolean isMine) {
        this.x = x;
        this.y = y;
        this.isMine = isMine;
    }


    @Override
    public String toString() {
        return "GameObject{" +
                "x=" + x +
                ", y=" + y +
                ", isMine=" + isMine +
                ", countMineNeighbors=" + countMineNeighbors +
                '}';
    }
}
package com.javarush.games.minesweeper;

import com.javarush.engine.cell.*;

import java.util.ArrayList;
import java.util.List;

public class MinesweeperGame extends Game {

    private final static int SIDE = 9;
    private GameObject[][] gameField = new GameObject[SIDE][SIDE];
    private int countMinesOnField;
    private static final String MINE = "\uF09F\u92A3";
    private static final String FLAG = "\uD83D\uDEA9";
    private int countFlags;
    private boolean isGameStopped;
    private int countClosedTiles = SIDE * SIDE;
    private int score;

    @Override
    public void initialize() {
        setScreenSize(SIDE, SIDE);
        createGame();


    }

    private void createGame() {
        int countOfMines = SIDE * SIDE / 10;
        for (int x = 0; x < SIDE; x++) {
            for (int y = 0; y < SIDE; y++) {
                boolean rnd = false;
                /*if (getRandomNumber(10) == 0) {
                    rnd = true;
                    countMinesOnField++;
                }*/
                gameField[y][x] = new GameObject(x, y, rnd);
                setCellColor(x, y, Color.ORANGE);
                setCellValue(x, y, "");
            }
        }
        while (countOfMines > countMinesOnField) {
            int x = getRandomNumber(9);
            int y = getRandomNumber(9);
            if (!gameField[y][x].isMine) {
                gameField[y][x].isMine = true;
                countMinesOnField++;
            }

        }
        countMineNeighbors();
        countFlags = countMinesOnField;

    }

    private void countMineNeighbors() {
        for (int x = 0; x < SIDE; x++) {
            for (int y = 0; y < SIDE; y++) {
                if (gameField[y][x].isMine == false) {
                    int count = 0;
                    List<GameObject> neighbors = getNeighbors(gameField[y][x]);
                    for (GameObject neighbor : neighbors) {
                        if (neighbor.isMine) {
                            count++;
                        }
                    }
                    gameField[y][x].countMineNeighbors = count;
                }
            }
        }
    }

    private List<GameObject> getNeighbors(GameObject gm) {
        int count = 0;
        int x = gm.x;
        int y = gm.y;
        List<GameObject> neighbors = new ArrayList<>();
        if (x != 0 && y != 0 && x != SIDE - 1 && y != SIDE - 1) {
            neighbors.add(gameField[y][x - 1]);
            neighbors.add(gameField[y][x + 1]);
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y + 1][x - 1]);
            neighbors.add(gameField[y + 1][x + 1]);
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y - 1][x - 1]);
            neighbors.add(gameField[y - 1][x + 1]);
        }
        if (x != 0 && y == 0 && x != SIDE - 1) {
            neighbors.add(gameField[y][x - 1]);
            neighbors.add(gameField[y][x + 1]);
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y + 1][x - 1]);
            neighbors.add(gameField[y + 1][x + 1]);
        }
        if (x == 0 && y != 0 && y != SIDE - 1) {
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y][x + 1]);
            neighbors.add(gameField[y - 1][x + 1]);
            neighbors.add(gameField[y + 1][x + 1]);
        }
        if (x != 0 && y == SIDE - 1 && x != SIDE - 1) {
            neighbors.add(gameField[y][x - 1]);
            neighbors.add(gameField[y][x + 1]);
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y - 1][x - 1]);
            neighbors.add(gameField[y - 1][x + 1]);
        }
        if (x == SIDE - 1 && y != 0 && y != SIDE - 1) {
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y][x - 1]);
            neighbors.add(gameField[y - 1][x - 1]);
            neighbors.add(gameField[y + 1][x - 1]);
        }

        if (x == 0 && y == 0) {
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y + 1][x + 1]);
            neighbors.add(gameField[y][x + 1]);
        }
        if (x == SIDE - 1 && y == SIDE - 1) {
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y - 1][x - 1]);
            neighbors.add(gameField[y][x - 1]);
        }
        if (x == 8 && y == 0) {
            neighbors.add(gameField[y + 1][x]);
            neighbors.add(gameField[y + 1][x - 1]);
            neighbors.add(gameField[y][x - 1]);
        }
        if (x == 0 && y == 8) {
            neighbors.add(gameField[y - 1][x]);
            neighbors.add(gameField[y - 1][x + 1]);
            neighbors.add(gameField[y][x + 1]);
        }


        return neighbors;
    }

    @Override
    public void onMouseLeftClick(int x, int y) {
        if (isGameStopped) {
            restart();
            return;
        }
        if (x >= SIDE || y >= SIDE || x < 0 || y < 0) {
            return;
        }
        openTile(x, y);
    }

    private void openTile(int x, int y) {
        if (isGameStopped) {
            return;
        }
        GameObject gameObject = gameField[y][x];
        if (gameObject.isOpen) {
            return;
        }
        if (gameObject.isFlag) {
            return;
        }

        if (gameObject.isMine) {
            setCellValueEx(x, y, Color.RED, MINE);
            gameOver();
        }

        if (!gameObject.isMine) {
            gameField[y][x].isOpen = true;
            countClosedTiles--;
            score = score + 5;

            if (gameObject.countMineNeighbors == 0) {
                List<GameObject> neighbors = getNeighbors(gameObject);
                for (GameObject neighbor : neighbors) {
                    if (!neighbor.isOpen) {
                        openTile(neighbor.x, neighbor.y);
                    }
                }
                setCellColor(x, y, Color.GREEN);
                setCellValue(x, y, "");
            }

            if (gameObject.countMineNeighbors != 0) {
                setCellNumber(x, y, gameObject.countMineNeighbors);
                setCellColor(x, y, Color.GREEN);
            }

        }
        setScore(score);
        if (countMinesOnField == countClosedTiles) {
            win();
            return;
        }
    }

    @Override
    public void onMouseRightClick(int x, int y) {
        if (isGameStopped){
            System.exit(0);
        }
        if (x >= SIDE || y >= SIDE || x < 0 || y < 0) {
            System.exit(0);
        }
        markTile(x, y);
    }

    private void markTile(int x, int y) {
        if (isGameStopped) {
            return;
        }
        GameObject gameObject = gameField[y][x];
        if (gameObject.isOpen) {
            return;
        }
        if (countFlags == 0 && !gameObject.isFlag) {
            return;
        }

        if (!gameObject.isFlag) {
            gameObject.isFlag = true;
            countFlags--;
            setCellValue(x, y, FLAG);
            setCellColor(x, y, Color.YELLOW);
            return;
        }
        if (gameObject.isFlag) {
            gameObject.isFlag = false;
            countFlags++;
            setCellValue(x, y, "");
            setCellColor(x, y, Color.ORANGE);
        }


    }

    private void gameOver() {
        isGameStopped = true;
        showMessageDialog(Color.BLACK, "GAME OVER. Your scores: " + score, Color.RED, 36);
    }

    private void win() {
        isGameStopped = true;
        showMessageDialog(Color.BLACK, "You Won. Your scores: " + score, Color.GREEN, 36);
    }

    private void restart() {
        isGameStopped = false;
        countClosedTiles = SIDE * SIDE;
        countMinesOnField = 0;
        score = 0;
        setScore(score);
        createGame();
    }

}