Запустите java-скрипт, используя пакет acm.program из терминала - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь запустить следующий скрипт - источник кода здесь - на моем терминале:

import acm.program.*;

public class Add2 extends Program {

   public void run() {
      println("This program adds two numbers.");
      int n1 = readInt("Enter n1: ");
      int n2 = readInt("Enter n2: ");
      int total = n1 + n2;
      println("The total is " + total + ".");
   }
} 

Затем я компилирую и запускаю код, используя эти два шага на моем терминале:

javac -classpath acm.jar Add2.java
java Add2

Компиляция указывает на отсутствие ошибок, но когда я пытаюсь запустить скрипт, я получаю следующую ошибку: Error: Could not find or load main class Add2. Я довольно новичок в работе с Java, поэтому любые советы о том, как сделать эту работу, будут с благодарностью!

1 Ответ

1 голос
/ 18 апреля 2019

Виртуальная машина Java (JVM) может выполнять код только с помощью метода main. Код не может быть выполнен без метода main, но он все равно может быть скомпилирован (как вы заметили), поэтому обязательно использовать метод main, иначе вы столкнетесь с java.lang.ClassNotFoundException.

Просто добавьте это к своему коду (вам не нужны комментарии):

public static void main(String[] args) {
    // This class is mandatory to be executed by the JVM.
    // You don't need to do anything in here, since you're subclassing ConsoleProgram,
    // which invokes the run() method.
}

Кстати, поскольку вы переопределяете Program#run(), вам нужно добавить @Override в качестве аннотации. Кроме того, поскольку вы используете только консоль, подкласса ConsoleProgram будет достаточно.

...