是否有一些工具或技术让我查询Java .class文件的内容?我想知道类的完全限定名称以及它定义的方法。我想也许javap
可以帮助我解决这个问题,但我无法弄清楚如何。
答案 0 :(得分:4)
致电javap ClassName
(不是javap ClassName.class
)。
如果您的.class
只是javap ClassName
如果您的.class
位于子文件夹javap path/to/ClassName
或javap path.to.ClassName
资源:
答案 1 :(得分:1)
.class文件中包含的类是否始终与文件名相同(不包括.class)
在实践中,是的。我遇到的每个Java实现都依赖于类文件路径名来定位要加载的类,等等。
理论上,类加载器可以使用其他一些机制,因此可以将类存储在与类名无关的文件中。但是,我认为这样做没有任何好处。
即使我使用其他语言,如Groovy,Jython或Scala?
鉴于这些语言编译为字节码文件然后由标准类加载器加载,那么字节码文件中的类名对应于文件路径名几乎是给定的...否则类加载器不会能够找到类文件。但是,这并不一定意味着字节码文件中的类名与Scala / Jython / Groovy中的源代码中使用的标识符相同。实际上,Java甚至都不是这样。例如匿名和内部类的类文件名与Java源代码中的标识符不同。
答案 2 :(得分:0)
试试这个Java Decompiler。应该给你你想要的信息。