我有一个完整的Java EE项目在GlassFish 4.1 / Java EE 7(NetBeans 8.0.2)上运行,没有使用Apache Maven。根据项目功能,需要将CDI依赖项添加到两个项目/模块,即EE模块和Web模块(如果有类库,则为其添加)。
我很困惑很长一段时间,看到人们建议将“Java EE 7 API Library”或“Java EE Web 7 API Library”添加到编译时类路径作为CDI依赖项(这些库在使用NetBeans时已经捆绑在一起,并且随时可用)。由于这些库包含可能自Servlet API开始的整个Java EE堆栈的API集合,因此将其中一个库添加到编译时类路径(特别是在EE项目中)在Java EE应用程序中需要CDI功能时是没有意义的。为什么在NetBeans项目中多次建议添加这些库之一,当只需要作为CDI依赖关系的cdi-api.jar就足够呢?我在这个网站上找不到一个权威的答案,也找不到其他地方可以说明在Java EE应用程序中需要CDI功能时在NetBeans项目中确切添加哪个库。不过,仅添加cdi-api.jar就可以了。