我在 IntelliJ 中编译并运行了一个简单的 Java 文件。它包含一个 main 方法和另一个小的静态方法。它每次都能完美运行。
但是,每当我尝试从终端java
在文件上运行命令时,我都会收到以下信息:.class
错误:无法找到或加载主类[此处为文件名]
我究竟做错了什么?
答案1
你 必须 跑, 不能跑.java YourClassName
java YourClassName.class
问题在于您.class
在命令中包含了后缀。
由于您没有给出所运行的特定命令,因此还有其他一些可能的解释。可能是您在文件位置以外的某个地方运行该命令,.class
并且没有给出它的完整路径,或者您拼错了它的名称,等等。但是,包含命令不期望的虚假.class
后缀是导致此问题的最常见原因。java
假设包含程序入口点(main()
方法)的类名为Foo
,其源代码位于当前目录中名为 的文件中Foo.java
,因此您通过运行 来编译程序javac Foo.java
。由于Foo
是类的名称,因此会生成一个名为 的文件,其中Foo.class
包含该类的已编译 Java 字节码。
要运行该程序,您必须运行:
java Foo
您的描述听起来像是在运行。对于首次使用该命令运行文件的用户(无论他们是用 Java 编程还是仅运行其他人提供的文件),java Foo.class
这是一个常见的绊脚石。java
.class
.class
java Foo.class
不起作用;该java
命令将其参数解释为包含入口点的类的名称,不是文件的名称。运行时java Foo
它知道要查找名为的文件Foo.class
。