Tin*_*iny 3 netbeans glassfish java-ee java-ee-7 glassfish-4.1
我有一个在GlassFish 4.1/Java EE 7(NetBeans 8.0.2)上运行的完整Java EE项目,不使用Apache Maven.
根据项目功能,必须将CDI依赖项添加到项目/模块(即EE模块和Web模块(以及类库,如果有)).
很长一段时间以来,我一直在混淆人们建议将"Java EE 7 API库"或"Java EE Web 7 API库"添加到编译时类路径中作为CDI依赖项(这些库捆绑在NetBeans和使用NetBeans时可以随时使用.
由于这些库包含一组API,可能是从Servlet API开始的整个Java EE堆栈,因此当CDI功能为CDI时,将其中一个库添加到编译时类路径(特别是在EE项目中)是没有意义的. Java EE应用程序中需要的.
为什么在NetBeans项目中多次建议添加其中一个库,只是cdi-api.jar
因为CDI依赖性足够?
在Java EE应用程序中需要CDI功能时,我没有在此站点上找到关于在NetBeans项目中准确添加哪个库的其他地方的规范答案.cdi-api.jar
顺便说一句,添加只会很好.
全部javaee-api
,javaee-web-api
而且cdi-api
只是API定义.它们不包含功能,它们只包含必要的接口,而不是编译代码.其结果是,没有的javaee-api
也javaee-web-api
应该包含在你的应用程序,因为他们已经被包含在应用程序服务器.该实现也由应用程序服务器提供,该服务器本身非常大,有时具有超过100MB的库.
如果您的应用程序仅依赖于CDI,那么您可以自由地将其cdi-api
作为依赖项.如果你想从javaee获得更多,那么最好选择一个配置文件(完整或网络).但是,请注意,服务器始终至少提供Web配置文件中包含的所有API,因此也值得考虑使用它.有选择地选择依赖关系仅适用于不完全支持Java EE的应用服务器(例如Tom EE).在这种情况下,您有时甚至需要在应用程序中包含实现或将其放在服务器中.