当前位置: 首页 > 知识库问答 >
问题:

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

孙帅
2023-03-14

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

然而,当我这样做的时候,我得到了“找不到或加载主类测试”的消息。我觉得这很奇怪,因为类在当前工作目录内(我也尝试过将“.”作为类路径传递,但没有用)。然后我尝试用“javap”反汇编它,这很完美,这很奇怪,因为如果javap能找到类文件,那么java肯定也能找到吗?

这是我的命令行输入和输出:

$javap-c测试

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测试

错误:找不到或加载主类测试

java Test.class

错误:找不到或加载主类测试

$java-cp。测试

错误:找不到或加载主类测试

$java-cp。测验班

错误:找不到或加载主类测试

可能出了什么问题?我可能错误地编译了类,但javap肯定会像java一样抱怨,并且javap输出看起来是正确的。

共有1个答案

柴岳
2023-03-14

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

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

 类似资料:
  • 遵循文档中的示例: https://symfony.com/doc/current/page_creation.html 我遇到这个错误消息: 自动加载程序期望类"App\Controller\LuckyController"定义在文件"/var/www/my-project/供应商/作曲家/.../... /src/Controller/LuckyController.php”。找到该文件,但类

  • 问题内容: 当我尝试在IntelliJ中创建项目时,在此行上收到以下错误: 错误: 是实现 接口* 的类 * 所有软件包都存在,我可以跳转到每个接口或类的声明,但是我不知道为什么IntellJ说它无法访问或找到它们?但是是接口而不是类 上面的声明位于一个名为jar的jar文件中,并且存在于Project图书馆员中。 问题答案: 该项目包含几个模块。在将库添加到项目库后,某些模块在其依赖项中缺少它。

  • 问题内容: 我决定开始一个新问题,以便可以严格关注FileReader错误。 此方法采用文件名和新文件的所需输出名。假设输入的文件名是“ hello.txt” …该方法使其类似于“ /home/User/hello.txt”,它作为参数进入FileReader。问题是,即使该文件确实存在并且目录结构和权限正确,我仍将其作为输出“ /home/User/hello.txt(无此类文件或目录)”获得。

  • 我似乎有一个问题,读取文件,它是在同一目录下的源。我正在使用Eclipse。我在想为什么它找不到文件。 无法读取文件 java.io.FileNotFoundException:simulation.configuration(系统找不到指定的文件) 在java.io.FileInputStream.Open(本机方法) 在java.io.FileInputStream.(未知源) 在java.i

  • 实现的com。谷歌。firebase:firebase核心:16.0.0’ 实现的com。谷歌。firebase:firebase邀请:16.0.0英寸 实现的com。谷歌。firebase:firebase存储:16.0.1英寸 实现的com。谷歌。firebase:firebase认证号:16.0.1’ 实现的com。谷歌。firebase:firebase崩溃:16.0.0' 以上是我根据需

  • 我用Spring-boot和spring security制作了一个简单的restAPI,实现了基本的身份验证。我想使用inMemoryAuthentication和bcryptPasswordEncoder,但由于某种原因,我的编译器在错误的地方查找passwordEncoder,请参阅标题vs Security.Crypto.Password.passwordEncoder。 我的基本身份验证