Java如何知道外部jar的方法



我不知道Java如何知道被引用的jar的方法?如果它只是为了运行而编译的,而你不能阅读它,我不知道你怎么还能看到这些方法。我的问题的一个例子是,如果你用一个名为"ShowABox"。然后将其添加到另一个Java项目中。那么IDE如何知道"ShowABox"是否存在,因为jar已经编译?你不能在IDE中读取类文件,为什么它能读取方法?

您所引用的所有信息实际上都存储在类文件中,正是出于这个原因。

至于在类文件中查看代码,您当然可以这样做,这也将证明信息是保留的。看看Java解压缩程序。请注意,如果您想直接在eclipse中看到它,您甚至可以将其构建到eclipse中。

编译后的类包含字节码。方法仍然有它们的真实名称,但它们的代码被编译为JVM指令。

您可以在wiki上阅读java类文件格式规范,阅读"常量池"段落,方法名称(作为其他类信息)包含在常量池中。

只要试着在文本编辑器中打开一些.class文件,你就会在那里找到方法名。(.class文件通常在project/bin文件夹中,或者打开.jar作为归档文件并从中获取.class)

JAR只不过是将所有类文件压缩到一个附带清单的文件中。每个类文件都完整地描述了它的公共接口。

JAR文件有一个非常特殊的格式—看见http://en.wikipedia.org/wiki/JAR_(file_format)—它们包含类文件,这些文件也具有非常特定的格式—看见http://en.wikipedia.org/wiki/Java_class_file.这种格式除了为Java虚拟机提供执行代码所需的信息外,还为IDE和编译器提供查找类、接口、字段、方法等所需的数据

jar只不过是一个包含Java编译的.class二进制文件的归档文件,这些二进制文件被压缩为一个文件。它的内容是按目录结构组织的编译二进制文件。因此,您可以将其视为一个包含文件的目录,但将其压缩为一个归档文件(就像zip文件一样)。jar本身不是一个二进制文件("自从jar已经编译后就存在了")——它本身不会被编译,而是包含编译后的元素。

最新更新