什么是一个jar文件包含?
作为一名实习生,我在项目中使用公司代码,他们通常会给我一个jar
文件来处理。 我将它添加到Eclipse
的构buildpath
,通常都很好,很棒。
然而,我很好奇知道,每个类包含什么,当我尝试打开jar
文件中的一个类时,它告诉我需要一个源文件。
这是什么意思? 我来自一个C / C + +的背景,所以是一个类似于已经编译的.o
文件的jar
,所有我能看到的是.h
东西? 或者是有我使用的jar
文件中的实际代码encryption,所以我不能读取它?
感谢所有的答案!
编辑:
谢谢,伙计们,我知道它就像一个档案,但是我很困惑,为什么当我试图打开.class
文件时,我得到了一堆随机字符。 当我试图在C中打开一个.o
文件时,输出是相似的,所以我只是想确认一下。
谢谢!
JAR文件实际上只是一个ZIP文件。 它可以包含任何东西 – 通常包含已编译的Java代码(* .class),但有时也包含Java源代码(* .java)。
但是,Java可以被反编译 – 如果开发人员混淆了他的代码,你将不会得到任何有用的类/函数/variables名称。
然而,我很好奇每个类包含什么,当我尝试打开jar文件中的一个类时,它告诉我需要一个源文件。
一个jar文件基本上是一个包含.class文件和可能的其他资源(以及有关jar本身的元数据)的zip文件。 实际上很难将C与Java进行比较,因为Java字节代码比大多数二进制格式维护更多的元数据 – 但类文件是编译代码而不是源代码。
如果您使用zip实用程序打开jar文件,或者运行jar xf foo.jar
,则可以从中提取文件,然后查看它们。 请注意,您不需要 jar文件来运行Java代码 – 类加载器可以直接从文件系统,URL或jar文件加载类数据。
了解jar文件包含的最好方法是通过执行此操作:
转到命令行并执行jar tvf jarfilename.jar
jar
文件是一个带有一些包含元数据的附加文件的zip文件。 (尽pipe.jar扩展名是zip格式,所有处理.zip文件的工具也能处理.jar文件)。
http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html
Jar文件可以包含任何types的文件,但是它们通常包含应用程序所需的类文件和支持的configuration文件(属性),graphics和其他数据文件。
类文件包含已编译的Java代码,可由Java虚拟机执行。
JAR代表Java归档。 这是基于stream行ZIP文件格式的文件格式,用于将多个文件合并为一个文件。 虽然JAR可以作为一个通用的归档工具,但其开发的主要动机是Java applet及其必需的组件(.class文件,图像和声音)可以在单个HTTP事务中下载到浏览器中,而不是打开每件作品都有一个新的连接。 这大大提高了一个小程序可以加载到网页上的速度,并开始运作。 JAR格式还支持压缩,从而减小文件的大小,并进一步缩短下载时间。 此外,小程序作者可以对JAR文件中的单个条目进行数字签名,以validation其来源。
Jar文件包含以*.class
forms编译的Java二进制类,可以使用一些开源反编译器将其转换为可读的.java
类。 该jar还有一个可选的META-INF/MANIFEST.MF
,告诉我们如何使用jar文件 – 指定其他的jar文件来加载jar。
JD-GUI是浏览和反编译JAR的一个非常方便的工具
.jar文件类似于.exe文件。 实质上,它们都是可执行的zip文件(不同的zipalgorithm)。
在一个jar文件中,您将看到文件夹和类文件。 每个类文件都与.o文件相似,并且是一个已编译的Java归档文件。
如果你想看到一个jar文件中的代码,下载一个Java反编译器(位于这里: http ://java.decompiler.free.fr/?q=jdgui)和.jar提取器(7zip工作正常)。
只要检查aopalliance.jar
文件是否具有.java
文件而不是.class
文件。 如果是的话,只需提取jar文件,将其导入到eclipse中,并通过eclipse创build一个jar文件。 它为我工作。
.jar文件包含与该代码相关的编译代码(* .class文件)和其他数据/资源。 它使您能够将多个文件捆绑到一个归档文件中。 它还包含元数据。 由于它是一个压缩文件,它能够压缩你放入它的数据。
几件事情我觉得有用。
http://www.skylit.com/javamethods/faqs/createjar.html
http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html
OSGi实际上将JAR文件定义为:“JAR是基于ZIP文件格式的归档文件,允许将多个文件合并为一个文件,通常包含在归档文件中的文件是已编译的Java类文件和资源的混合文件,如图像和文档,另外,规范定义了一个JAR归档文件中的元数据标准位置–META-INF文件夹 – 以及其中最重要的是MANIFEST.MF文件中的几个标准文件名和格式。
根据我的理解,Jar文件与Zip相同,但具有可执行文件。
如果你没有在Jar中的可执行文件,那么它将与Zip文件相同,我的意思是说为什么去jar子。
由于Jar文件具有可执行文件,因此它们可以轻松加载到您的代码中,并轻松转移到其他人使用它。
Jar(Java Archive)包含一组.class文件。
1.创buildJar文件(Zip文件)
if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it's not feasible for only one .class file) if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class
2.提取Jar文件(解压缩文件)
jar -xvf NameOfJarFile.jar
3.显示内容表
jar -tvf NameOfJarFile.jar