jar文件是如何执行的?这些课程是在某处提取的吗?

Viv*_*vek 15 java jvm executable-jar

我们知道这jar是一种压缩的归档文件格式,它充当已编译的java类和conf文件的容器.据我所知,要从压缩容器文件中读取任何内容,首先需要将它们提取到某处.

那么JVM如何在jar中执行类?它是否将jar的内容提取到临时位置然后执行类?

icz*_*cza 20

JVM能够从jar文件加载类或文件,而无需将jar解压缩到临时文件.

标准库中也提供了此功能,JarFile有关详细信息,请参阅.

所以不,JVM不会将jar提取到临时文件,只需按需加载类(和资源).

jar文件基本上是一个带有预定义条目的zip文件"META-INF/MANIFEST.MF"(只有在可执行jar的情况下才是必需的).此条MANIFEST.MF目(文件)包含JVM读取的一些信息.有关清单文件的更多信息:

使用清单文件:基础知识

在可执行jar的情况下,Manifest文件还包含应加载的主类以及public static void main(String[])为启动应用程序而调用的方法.该Main-Class清单条目指定主类:

Main-Class: classname
Run Code Online (Sandbox Code Playgroud)