我使用Java ASM库编译了一个类(称为Test.class)。我决定尝试使用"java"命令运行这个类,以确保我已经正确编译了这个类。
然而,当我这样做时,我得到了"无法找到或加载主类Test"消息。我认为这很奇怪,因为类在当前工作目录内(我也尝试过传递"。"作为类路径,但无济于事)。然后我尝试用"javap"反汇编它,它工作得很好,这很奇怪,因为如果javap可以找到类文件,那么肯定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
}
错误:无法找到或加载主类Test
错误:无法找到或加载主类Test
$ Java -cp。测试
错误:无法找到或加载主类Test
$ Java -cp。Test.class
错误:无法找到或加载主类Test
出了什么问题?我可以不正确地编译类,但可以肯定的是,javap会抱怨,以及java和javap输出看起来是正确的。
我发现了问题,我没有用斜杠替换类的超类限定名中的点。
所以这个类有一个超类"java.lang "。