让我们假设我有一个名为A的动态Web项目.这个项目A依赖于另一个名为B的Project,它使用了一个Dom4J jar.如果B将此jar添加为依赖项并在项目A的构建路径中添加项目B,并且在项目B中有一个抛出Dom4J异常的方法,如何避免将Dom4J添加为项目A中的依赖项,这样我就不会将两个项目中的Dom4J作为依赖项?
解决方法:
如果您的代码直接调用声明抛出Dom4jException的方法,则需要在构建类路径中使用Dom4j.这只是方法签名的一部分,编译器必须能够解析它.
如果这是一个问题(即你想隐藏Dom4j作为项目B的“实现细节”),那么你需要确保Project B的面向公众的API都没有公开任何Dom4j类.例如,您可以将throws子句更改为扩展为适当的公共异常或包装异常.
请注意,仅当项目A访问项目B中直接引用Dom4J的类时,才会出现此问题.对于您没有直接编译的内部类,这不是问题.当然,您仍然需要在运行时使用Dom4J.
最后,在Maven中,默认情况下,您还可以在编译时类路径中获得所有可传递的编译时依赖项.所以Dom4J已经存在,你不应该得到构建错误.但是,如果您要使用Dom4J(例如通过捕获异常),则直接明确地包含它是一种好习惯.
标签:java
来源: https://codeday.me/bug/20190623/1271474.html