使用-jar时指定第三方的classpath的方法

最近有个工具要用java来实现,具体需求是扫描目录下的所有的jar并将其中符合条件的类加载。

 

稍微要注意的难点在于如何加载某些路径下的类而不会出现ClassNotFoundException。

 

这个任务交给一个同事做,搞了几星期,最后给我一个恶心的方式:使用jar中的manifest.mf中的Class path属性,每次有扫描的jar时,将该jar的相对路径加到该属性中。。

 

没办法,只能自己搞定了,上网找了一下,发现了一个jvm启动参数java.ext.dirs, 可以用来指定ext classloader的扫描路径,于是我写了一个bat,里面就一句java -Djava.ext.dirs=. -jar myTool.jar,就搞定了。

 

以后只要将要扫描的包copy到同一目录下就OK了。。。

 

java.ext.dirs这个属性可以用来指定一个或者多个指定的扫描路径,多个之间使用系统分隔符来分隔(即File.pathSeparatorChar的值,window环境下为分号“;”)

你可能感兴趣的:(Java,SE,classloader,jar,java,jvm,class,path)