我有两个来自客户端的jar文件,其中一个用于测试,另一个用于最终版本。目前我将它们放在不同的文件夹中并在部署代码时修改库路径,但是能够加载两个jar文件并在运行时动态切换它们会很好。
这可能吗?
答案 0 :(得分:6)
您始终可以编写自己的ClassLoader并使用标准ClassLoader链接它。
http://download.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html
我在10年前使用这种方法来加载通过套接字接收并在XML文件中指定的类(也通过套接字)。我的java程序不知道这些类在获得XML文件和类之前就已经存在了。
答案 1 :(得分:2)
使用OSGi包可以做到这一点。看看http://blog.springsource.com/2008/02/18/creating-osgi-bundles/。搜索“多个版本”。
答案 2 :(得分:1)
justinjh,
chrisparker2000的建议看起来是最可行的 - 你必须编写一个自定义类加载器,我能想到的唯一变化是以下几行: 1.对于客户端可交付的jar - 比如client.dev.jar和client.prod.jar,重命名为不同的扩展名并将它们放在类路径中。重命名为不同的扩展名以防止容器加载jar的内容。
答案 3 :(得分:1)
如果您使用像maven这样的构建工具,则可以为不同的范围(测试与生产)定义不同的jar文件(依赖项)。
您也可以使用maven配置文件来定义不同的jar文件/版本集。