我尝试按照Netbeans e-commerce tutorial来熟悉Netbeans。我使用Netbeans 7.0,这个教程建议用于Netbeans 6.8-6.9。通常,调整非常简单(显示的元素顺序不同,或者有更多字段)。
教程在第三章中说明:“Make sure that the 'Enable Contexts and Dependency Injection' option is deselected.”
对于chapter 7,我会根据第7章中的内容对其进行调整,尤其是在ControllerServlet
中添加以下代码:
@EJB
private CategoryFacade categoryFacade;
public void init() throws ServletException {
// store category list in servlet context
getServletContext().setAttribute("categories", categoryFacade.findAll()); // line 37
}
当他们说要运行它时我尝试运行它,并且我在第37行收到NullPointerException
。第37行是上面写的init方法中的实际代码。这个例外发生在服务器端,所以我想在某些时候,编写教程的人改变了主意并激活了CDI。我试图添加一个虚拟beans.xml
来解决问题,但没有成功。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
在此之后,我下载了所提供的代码并从他们的“断点”(文件AffableBean_snapshot3.zip)重新编写了工作,我得到了相同的NullPointerException
。我也在本教程的这一部分(AffableBean_snapshot4.zip)之后采用了该项目的版本,并且它仍然在完全相同的点上失败。
那么,我做错了什么?我真的应该使用Netbeans 6.9而不是7.0吗?唯一值得注意的差异是某些xml文件的文件名,在Netbeans 6.9中为sun-*
,在Netbeans 7.0中为glassfish-*
。