java安装拓展程序

来源资料:https://docs.oracle.com/javase/tutorial/ext/basics/install.html
拓展例子:https://gitee.com/longguiyunjosh/java-spi/tree/master/
偶尔看到的资料,深怕过了一段时间就忘记了。随便就写了一下。

在我们打包jar工程的时候,往往都有很多依赖第三方的jar包。常用的maven构建工具,在我们打jar包的时候,需要把依赖的jar包打到固定的文件夹下。
然后jar包里的METE-INF文件夹下的MANIFEST.MF文件会中有 CLASS-PATH会有依赖的jar包配置,多个依赖用空格分开。

Manifest-Version: 1.0
Built-By: xx
Class-Path: lib/DemoC-1.0-SNAPSHOT.jar lib/DemoB-1.0-SNAPSHOT.jar
Created-By: Apache Maven 3.5.3
Build-Jdk: 1.8.0_171
Main-Class: com.amzing.jar.DemoA

如果没有指定Class-Path的话,我们可以把依赖的jar包放入jre中的lib/ext中去,jvm会直接加载我们需要的jar包。

可以通过配置 -verbose:class查看jvm加载了那些class。
下面可以发现DemoC实在jre/lib/ext中的文件夹下

[Loaded java.lang.Void from D:\develop_tool\Java\jdk1.8.0_171\jre\lib\rt.jar]
[Loaded com.amzing.jar.A from file:/D:/work/temp_code/jar-install/DemoA/target/DemoA-1.0-SNAPSHOT.jar]
[Loaded com.amzing.jar.C from file:/D:/develop_tool/Java/jdk1.8.0_171/jre/lib/ext/DemoC-1.0-SNAPSHOT.jar]

我们直接指定jar文件,可以直接调用到依赖的jar包

PS D:\work\temp_code\jar-install\DemoA\target> java -jar .\DemoA-1.0-SNAPSHOT.jar
I am Class A.
I am class C.

到此结束。。。

你可能感兴趣的:(java安装拓展程序)