Java 找不到 class 文件,而 javap 可以

Java cannot find the class file, while javap can

我使用 Java ASM library 编译了一个 class(称为 Test.class)。我决定尝试使用 "java" 命令 运行 来确保我已经正确编译了 class。

但是,当我这样做时,我收到了 "Could not find or load main class Test" 消息。我认为这很奇怪,因为 class 位于当前工作目录中(我也曾尝试将“.”作为 class 路径传递,但无济于事)。然后我尝试用 "javap" 分解它,效果很好,这很奇怪,因为如果 javap 可以找到 class 文件,那么肯定 java应该也可以吧?

这是我的命令行输入和输出:

$ javap -c Test

Compiled from "Test.ash" 
public class Test
{   
  public Test();
    Code:
     0: aload_0
     1: invokespecial #9 // Method "java.lang.Object"."<init>":()V
     4: return

  public static void main(java.lang.String[]);
    Code:
     0: return
}

$ java Test

Error: Could not find or load main class Test

$ java Test.class

Error: Could not find or load main class Test

$ java -cp . Test

Error: Could not find or load main class Test

$ java -cp . Test.class

Error: Could not find or load main class Test

可能出了什么问题?我可能会错误地编译 class,但是 javap 肯定会像 java[=29= 一样抱怨] 并且 javap 输出看起来正确。

我发现了问题,我没有用斜杠替换 class' super-class 限定名称中的点。

因此 class 具有 "java.lang.Object" 的超级 class,而不是 "java/lang/Object",这是必需的。