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