Нет основного метода, но есть главный?

  class TapeDeck {

        boolean canRecord = false;

        void playTape() {
                System.out.println("Tape Player");
        }

        void recordTape() {
                System.out.println("Tape Recording");
        }
}

class TapeDeckTestDrive {
        public static void main (String [] args) {

                TapeDeck t = new TapeDeck();

                t.canRecord = true;
                t.playTape();

                if (t.canRecord == true) {
                        t.recordTape();
                }
        }
}

Получение сообщения об ошибке "Исключение в потоке"main" java.lang.NoSuchMethodError: main"

7 ответов

Бежать с TapeDeckTestDrive как основной класс, а не TapeDeck - и сделайте ваш класс публичным

Сделайте TapeDeckTestDrive общедоступным классом примерно так:

 class TapeDeck {

    boolean canRecord = false;

    void playTape() {
            System.out.println("Tape Player");
    }

    void recordTape() {
            System.out.println("Tape Recording");
    }
}

public class TapeDeckTestDrive {
    public static void main (String [] args) {

            TapeDeck t = new TapeDeck();

            t.canRecord = true;
            t.playTape();

            if (t.canRecord == true) {
                    t.recordTape();
            }
    }
}

Затем, когда вы собираетесь запустить его, позвоните:

java TapeDeckTestDrive

Может быть, потому что ваш класс не является публичным.

TapeDeck.java

public class TapeDeck {

    boolean canRecord = false;

    void playTape() {
            System.out.println("Tape Player");
    }

    void recordTape() {
            System.out.println("Tape Recording");
    }
}

TapeDeckTestDrive.java

public class TapeDeckTestDrive {
    public static void main (String [] args) {

            TapeDeck t = new TapeDeck();

            t.canRecord = true;
            t.playTape();

            if (t.canRecord == true) {
                    t.recordTape();
            }
    }
}

И беги используя>java TapeDeckTestDrive.java

Вам нужно запустить его как:

java TapeDeckTestDrive

как класс TapeDeckTestDrive имеет main метод.

Похоже, вы управляете TapeDeck класс, который не имеет main Метод, следовательно, ошибка.

Лучше сделайте 2 файла с вашими классами и обнародуйте класс, у которого есть метод main. Но если вам нравится приведенный выше пример с 1 файлом, просто сделайте:

в командной строке вы можете:

javac FileWith2Classes  //compile make you 2 files with your classes
java TapeDeckTestDrive  //and simple run your class where you have main method

Сделайте ваш основной класс публичным

открытый класс TapeDeckTestDrive { }

Другие вопросы по тегам