以一个独立的可执行 jar 文件为例,我们在该文件中从应用程序生成具有所有依赖项等的文件。我的理解是,该文件包含所有压缩的类等。
当我们通过命令行执行这个jar文件时,如下java -jar myjar.jar
,这是动态解压吗?解释器在执行之前是否首先解压缩所有内容,或者它到底是如何工作的?
最佳答案
我们已经在这里对类似问题有了一个答案: 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所在的文件夹是否有解压。
关于java - jar 文件是否即时解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477462/