例如,以一个独立的可执行jar文件为例,我们从应用程序中生成具有所有依赖项等的文件。我的理解是,该文件包含所有已压缩的类等。
当我们按照命令行java -jar myjar.jar
执行此jar文件时,该文件是否正在即时解压缩?解释器是在执行之前先对所有内容进行解压缩吗?或者它究竟如何工作?
答案 0 :(得分:0)
我们在这里已经对类似问题有一个答案: How does a jar file get executed? Do the classes get extracted somewhere?
JVM能够从jar文件加载类或文件,而无需将jar提取为临时文件。标准库中也提供了此功能,有关更多信息,请参见JarFile。
因此,不,JVM不会将jar提取到临时文件,类(和资源)只是按需加载。
我们还可以通过执行命令“ java -jar myjar.jar”来检查jar是否被提取,并在执行程序时检查jar所在的文件夹中是否有任何提取。