编程语言
首页 > 编程语言> > Java找不到类文件,而Javap可以找到

Java找不到类文件,而Javap可以找到

作者:互联网

我已经使用Java ASM library编译了一个类(称为Test.class).我决定尝试通过使用“ java”命令运行该类,以确保已正确编译了该类.

但是,当我这样做时,出现了“找不到或加载主类测试”消息.我认为这很奇怪,因为该类位于当前工作目录内(我也曾尝试将“.”作为类路径传递,但无济于事).然后,我尝试使用“ 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

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

可能出什么问题了?我可能不正确地编译了该类,但随后肯定javap会像java一样抱怨并且javap输出看起来正确.

解决方法:

我发现了问题,我没有用斜杠替换类的超类合格名称中的点.

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

标签:java-bytecode-asm,javap,java
来源: https://codeday.me/bug/20191120/2040731.html