运行 java 脚本利用来自终端的 acm.program 包

Run java script utilizing acm.program package from terminal

我正在尝试 运行 以下脚本 - source of code here- 在我的终端上:

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 方面相当陌生,因此非常感谢任何有关如何完成这项工作的建议!

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 as annotation. Also, as you're only using the console, subclassing ConsoleProgram 就足够了。