如何为类加载器任意加载JAR?

时间:2013-03-13 19:40:53

标签: java

我希望能够根据我正在与之交谈的服务器版本加载不同版本的JAR文件,代表客户端API。不幸的是,每个版本的服务器都需要不同的客户端API。有没有办法创建一个基于指定的CLASSPATH查找类文件的ClassLoader?换句话说,我想告诉ClassLoader搜索类文件的位置序列。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望自定义ClassLoader根据某些配置查看不同位置。例如,在一种情况下,它可能在/ foo中,另一种在/ bar中,而在另一种情况下,它可以先查看/ foo然后查看/ bar。如果这是正确的,那实际上并不那么艰难。查看URLClassLoader(http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html)。您可以向ClassLoader指定哪些URL(可以是本地目录或文件)和“在首次在指定的父类加载器中搜索后,将按照为类和资源指定的顺序搜索URL。”

关键是父类ClassLoader无法知道您不想搜索的路径,因此您必须手动执行一些类路径配置,而不是让JVM来处理它。

相关问题