我有一个java项目,我使用外部jar(不受我控制)。 到目前为止,每当该库的新版本发布时,我都会更新 我的项目使用更新的项目,但现在需要 项目使用该库的不同版本。
我的问题是我不知道如何做到这一点。 我如何在java中告诉根据jar的版本进行导入,
我需要做什么:
int versionFlag = getVersion2use();
if(verssionFlag = 0){
use imports from last version
}else if(verssionFlag = 1){
use imports from last version 1
} else if(verssionFlag = 2){
use imports from last version 2
}
这将在运行时使用!
最佳答案
这通常是项目在构建时而不是在运行时动态执行的操作。
也就是说,这是关于如何在运行时动态地将 jar 添加到系统类加载器的一个很好的答案,您可以将其应用到上面的一般逻辑中:
How should I load Jars dynamically at runtime?
对于导入,您无法动态选择导入,这是无法回避的事实。因此,如果幸运的话,这两个版本具有相同的基本 API。如果这种情况成立,请尽早在应用程序中将 jar 添加到类加载器,然后像平常一样进行开发。
但是,如果两个版本具有不同的 API,那么您将不得不编写一些非常复杂的代码来尝试构建对象,并且几乎无处不在地捕获所有许多不同的类加载/类不兼容异常(例如 ClassNotFoundException)。更糟糕的是,您可能必须在某种外观或工厂架构后面执行此操作,以便您实际上可以继续运行与所有这些类加载恶作剧隔离的软件。简而言之,如果两者具有不同的 API,您实际上最好编写两个单独的产品。
关于java - 如何在运行时使用不同版本的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30621325/