Java无法找到类文件,而javap可以

时间:2015-07-13 20:24:54

标签: java java-bytecode-asm javap

我使用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 输出看起来是正确的。

1 个答案:

答案 0 :(得分:3)

我发现了问题,我没有用斜杠替换类'超类限定名中的点。

因此该类具有“java.lang.Object”的超类,而不是“java / lang / Object”,这是必需的。