Java构建时和运行时依赖性

时间:2009-06-29 09:52:12

标签: java dependencies

我正在开发一个库。我希望在某个其他库位于类路径中时,还可以使用某些功能。我的理解是:

  • 会有一个构建时依赖,因为我从该lib导入并在地方使用它
  • 只有当代码路径到达我正在使用该库中的某些内容的时候
  • 才会出现运行时依赖性

我说错了吗?

2 个答案:

答案 0 :(得分:6)

  

我说错了吗?

  

运行时依赖性仅在代码路径到达...

时出现

我会将其命名为执行路径。任何时候执行中的代码都会达到一些

a.A a = new a.A();

如果类a.A不在您的类路径上,它将抛出Runntime异常。这意味着你必须运行并达到这一点才能得到错误。如果您的程序没有达到这一点,它永远不会失败。

答案 1 :(得分:2)

您可能已经这样做了,但是如果类在运行时可能会或可能不在类路径上,我建议使用ClassLoader显式加载类,如果找不到类,则采取适当的操作(因为这个在你的情况下听起来不像错误条件)。它会使代码更清晰,而不是像以下那样:

try {
  new MyClass(); // Could potentially thrown a ClassNotFoundException.
  // ... yada yada
} catch(ClassNotFoundException ex) {
  // Do something else instead.
}

您可能需要考虑的其他方法是将库调用包装在适配器层中,并在库不可用的情况下提供适配器的No-Op实现,使代码的其余部分与库是否无关是否存在。