我使用Java ASM library编译了一个类(称为Test.class)。我决定尝试通过尝试使用" java"来运行它来确保我已正确编译该类。命令。
然而,当我这样做时,我得到了#34;无法找到或加载主类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
}
$ java Test
错误:无法找到或加载主类测试
$ java Test.class
错误:无法找到或加载主类测试
$ java -cp。测试
错误:无法找到或加载主类测试
$ java -cp。的Test.class
错误:无法找到或加载主类测试
可能出现什么问题?我可能错误地编译了这个类,但是肯定 javap 会抱怨 java 并且 javap 输出看起来是正确的。
答案 0 :(得分:3)
我发现了问题,我没有用斜杠替换类'超类限定名中的点。
因此该类具有“java.lang.Object”的超类,而不是“java / lang / Object”,这是必需的。