1

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

4

1 回答 1

0

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

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

于 2013-03-13T20:05:09.107 回答