2012-03-29 34 views
2

图书馆想出了:的Java:内我们有在工作和讨论一​​个有趣的问题库和CLASSPATH问题

假设你正在开发一个小型图书馆,称之为somelib。说somelib需要做一些日志记录,但你不想重新发明轮子,所以你决定使用第三方日志库。

此外,你想somelib尽可能无痛的集成,所以你分发一个JAR文件(somelib.jar),它具有其他日志JAR,称之为logger.jar,嵌入它内。就像Maven的jar-with-dependencies程序集一样。

现在出现这个问题。既然你的产品是一个图书馆,如果你的客户正在使用somelib,并且恰巧它们自己正在使用不同版本的相同日志记录库。现在我们有一个类路径问题。

在我看来,这对于编写库的人来说是个常见问题,那么典型的解决方案是什么?

  1. 难道他们避免使用JAR捆绑的方法完全?即使我们这样做,仍然存在与日志库的用户代码预期X版本的问题,并somelib的代码期待的版本Y.

  2. 难道他们不知怎么插入,这样一个傻瓜包前缀记录器类somelib会不会冲突?

  3. 怎么样动态加载记录器库? (尽管这仍然具有来自1的版本问题。)

+1

听起来像古典罐地狱问题。 – 2012-03-29 00:07:06

回答

1

您可以考虑使用OSGI或等待JDK 8及其Jigsaw项目。