是否有一些工具或技术可以让我查询Java .class文件的内容?我想知道该类的完全合格的名称及其定义的方法。我认为也许 javap 可以帮助我,但我无法弄清楚如何。

有帮助吗?

解决方案

是.class文件中包含的类始终与文件名相同(不包括.class)

实际上,是的。我遇到的每个Java实现都依靠类文件路径名来定位要加载的类,等等。

从理论上讲,classloader 可以 使用其他一些机制,因此 可以 将类存储在与类名称无关的文件中。但是,我认为这样做没有任何优势。

即使我使用其他语言,例如Groovy,Jython或Scala?

鉴于这些语言将其编译到字节码文件中,然后由标准类加载程序加载,因此几乎给定的是,字节码文件中的类名称与文件路径名相对应...否则,类加载程序将无法找到类文件。但是,这并不一定意味着字节码文件中的类名与源代码中使用的标识符相同。的确,对于爪哇来说,这甚至不是正确的。例如,匿名和内部类的类名称与Java源代码中的标识符不同。

其他提示

称呼 javap ClassName (不是 javap ClassName.class).

如果你的 .class 只为了 javap ClassName
如果你的 .class 在子文件夹中 javap path/to/ClassName 或者 javap path.to.ClassName


资源 :

试试这个 Java分解器. 。应该为您提供所需的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top