Jsf Netbeans找不到CDI包javax.enterprise.context*

Jsf Netbeans找不到CDI包javax.enterprise.context*,jsf,netbeans,cdi,Jsf,Netbeans,Cdi,我正在和我的一位大学同事一起创建一个简单的JSF应用程序,当我从我们的存储库中取出应用程序时遇到了一些麻烦。当我将项目导入NetBeans IDE 8.0.1时,程序无法在以下基于CDI的注释上正确编译: @Named @RequestScoped public class LoginController implements Serializable {... 它通知我,它找不到以下软件包: import javax.enterprise.context.*; 起初我认为我没有安装EJB和

我正在和我的一位大学同事一起创建一个简单的JSF应用程序,当我从我们的存储库中取出应用程序时遇到了一些麻烦。当我将项目导入NetBeans IDE 8.0.1时,程序无法在以下基于CDI的注释上正确编译:

@Named
@RequestScoped
public class LoginController implements Serializable {...
它通知我,它找不到以下软件包:

import javax.enterprise.context.*;
起初我认为我没有安装EJB和EAR插件,但是我安装了从netbeans网站下载的JavaEE包。是否有任何我可能丢失的其他JAR导致此特定错误


在我同事的本地机器上,一切正常,没有任何问题,所以我不清楚为什么我的计算机上没有出现这种情况。

我也有这个问题。glassfish库结构有所改变,因此我们没有使用“来自glassfish的Java EE”库,而是使用了“来自API的Java EE”库,并对其进行了修复。

是的,这个netbeans版本似乎缺少javax.enterprise包。这是解决办法

1) 如果您使用的是maven项目,请添加javax.enterprise(cdiapi.jar)作为依赖项


2) 对于其他项目,下载cdi-api.jar,从项目属性中将其作为外部jar添加,它将启用cdi。

两个建议的解决方案都是有效的,但最简单的解决方案是第二个,因为您已经获得了NetBeans 8.0中所需的一切


您的问题显然是GlassFish 4.1中默认的JavaEE包(版本7)的结果。当然,这是一个NetBeans错误。当您选择使用JavaEE6时,Netbeans应该已经将所需的库添加到您的项目中。

是的,您需要包含另一个库。您正在使用属于JavaEE的部件。默认情况下,java包括JavaSE。因此,您需要在项目中添加此库


项目属性->库->添加库->Java EE Web 7 Api库

@BalusC,你知道这个实例会发生什么吗?它是maven项目吗?如果是maven,则必须具有javaee-web-api-X.X.jar依赖项,否则需要定义与项目关联的glassfish服务器实例(右键单击->属性->运行->服务器)。@Yamada,不幸的是,情况并非如此。我们根本没有使用Maven。我已经为此应用程序定义了一个glassfish服务器实例,所以这不是问题所在。