我正在尝试以 OOP 风格编写 Java 程序,并将两个文件放在名为实用程序的同一个文件夹下。该包也是实用程序。
HelloWorld.java
package utility;
class HelloWorld {
public void hello() {
System.out.println("Hello, world!");
}
}
HelloWorldDriver.java
package utility;
public class HelloWorldDriver {
public static void main(String[] args) {
HelloWorld sayhello = new HelloWorld();
sayhello.hello();
}
}
我使用 Eclipse 运行 HelloWorldDriver.java
,结果成功。
你好,世界!
然而,当我使用终端运行程序时,出现了问题。首先,我使用 javac 编译文件夹中的所有 .java 文件。然后,我直接运行文件。
bash-3.2$ javac *.java
bash-3.2$ java HelloWorldDriver.java
但是,出现了以下问题。
HelloWorldDriver.java:5: error: cannot find symbol
HelloWorld sayhello = new HelloWorld();
^
symbol: class HelloWorld
location: class HelloWorldDriver
HelloWorldDriver.java:5: error: cannot find symbol
HelloWorld sayhello = new HelloWorld();
^
symbol: class HelloWorld
location: class HelloWorldDriver
2 errors
error: compilation failed
请帮助建议代码或我使用命令行的方式是否有任何问题。
答案 0 :(得分:0)
这里有两件事:
您的错误来自您尝试在命令行中运行代码的方式。当您使用 var something = value + 2
return something
命令时,您希望指定要运行的编译类文件,而不是要运行的 java 文件。这看起来类似于 tls [internal|<email>] | [<cert_file> <key_file>]
{
protocols <min> [<max>]
ciphers <cipher_suites...>
curves <curves...>
alpn <values...>
load <paths...>
ca <ca_dir_url>
ca_root <pem_file>
dns <provider_name> [<params...>]
eab <key_id> <mac_key>
on_demand client_auth {
mode [request|require|verify_if_given|require_and_verify]
trusted_ca_cert <base64_der>
trusted_ca_cert_file <filename>
trusted_leaf_cert <base64_der>
trusted_leaf_cert_file <filename>
}
issuer <issuer_name>
[<params...>]
}
,相当于 java
。由于您正在引用驱动程序文件中的另一个文件,因此您需要将其添加到类路径中,以便 Java 运行时环境在您要求它运行该文件中的函数时知道该做什么。在您的情况下,我相信要运行的正确命令是 java myProgram.class
。
我想提到的另一件事是,在您的实际代码中,您实际上并不需要通过执行 java myProgram
来创建 HelloWorld 类的实例。相反,您可以删除该行并将其后的行更改为 java HelloWorldDriver -cp HelloWorld
。在某些情况下,您不想这样做,但是对于您正在做的事情,使用 HelloWorld sayhello = new HelloWorld();
就可以了。