Java应用程序访问库的多个版本

Java应用程序访问库的多个版本,java,annotations,version,Java,Annotations,Version,我正在编写一个客户端(EclipseRCP),它需要能够使用库的多个版本(封装后端接口)。库的每个版本都会添加一些客户端使用的新类/方法。如果使用较旧的lib版本,客户端将访问lib字节码中不存在的新类/方法,从而导致NoClassDefFoundError 所以我在想如何以最好的方式做到这一点。使其故障安全的最简单方法是将对此类代码的所有调用封装到try/catch块中。我正在考虑编写一个自定义注释来标记库源代码中的新代码,然后在从try/catch不安全的代码访问此类标记代码时发出编译器警告

我正在编写一个客户端(EclipseRCP),它需要能够使用库的多个版本(封装后端接口)。库的每个版本都会添加一些客户端使用的新类/方法。如果使用较旧的lib版本,客户端将访问lib字节码中不存在的新类/方法,从而导致NoClassDefFoundError


所以我在想如何以最好的方式做到这一点。使其故障安全的最简单方法是将对此类代码的所有调用封装到try/catch块中。我正在考虑编写一个自定义注释来标记库源代码中的新代码,然后在从try/catch不安全的代码访问此类标记代码时发出编译器警告(这可以通过自定义注释完成吗?以前没有编写过)。或者有人能想出一种更优雅的方法吗?

您可以使用maven repository提供不同版本的库。 Maven中央存储库可用于以下版本:


您可以设置自己的Artifactory实例:

这根本不是我想要的。问题不在于如何获得lib版本,而在于如何处理我在代码中提到的东西。好的方法是使用接口。您可以提供将使用客户端的接口。将为用户提供无问题的新实现。