jar 文件究竟包含什么?

2022-08-31 10:33:58

作为一名实习生,我在项目中使用公司代码,他们通常会给我发送一个文件来使用。我将其添加到内置中,通常一切都很好,很花哨。jarpathEclipse

但是,我很好奇地知道每个类包含的内容,当我尝试打开文件中的一个类时,它告诉我需要一个源文件。jar

这是什么意思?我来自C / C++背景,所以类似于已经编译的文件,我所能看到的只是这些东西?或者我正在使用的文件中是否有加密的实际代码,因此我无法读取它?jar.o.hjar

感谢所有的答案!

编辑:
谢谢,伙计们,我知道这有点像档案,但我对为什么当我试图打开文件时感到困惑,我得到了一堆随机字符。当我尝试在C中打开文件时,输出是相似的,所以我只是想确保。
谢谢!.class.o


答案 1

JAR文件实际上只是一个ZIP文件。它可以包含任何内容 - 通常它包含编译的Java代码(*.class),但有时也包含Java源代码(*.java)。

但是,Java可以反编译 - 如果开发人员混淆了他的代码,您将无法获得任何有用的类/函数/变量名称。


答案 2

但是,我对每个类包含的内容感到好奇,当我尝试打开jar文件中的一个类时,它告诉我需要一个源文件。

jar 文件基本上是一个 zip 文件,其中包含.class文件和潜在的其他资源(以及有关 jar 本身的元数据)。很难真正将C与Java进行比较,因为Java字节代码比大多数二进制格式维护更多的元数据 - 但是类文件编译代码而不是源代码。

如果您使用zip实用程序打开jar文件或运行,则可以从中提取文件,并查看它们。请注意,您不需要 jar 文件来运行 Java 代码 - 类装入器可以直接从文件系统、URL 以及 jar 文件加载类数据。jar xf foo.jar


推荐