java -jar 是如何将jar包加载到jvm进程的?

大佬们,我不太理解-jar这个命令,这是调用某个java写的classloader实现的加载,还是直接在c++里面实现的加载?
如果是java用classloader实现的加载jar,能否给出具体的classloader?

阅读 2.6k
1 个回答

用的就是JVM自己的Internal class loader,你自己println class loader都能看出来。

能直接运行的 jar包叫可执行jar (executable jar),需要在manifest文件中定义main函数的路径:

Main-Class: classname

参见: https://docs.oracle.com/javas...

效果就跟你解开jar包之后直接java -cp . Package.Class 效果一样

推荐问题