我尝试按照Netbeans 电子商务教程来熟悉 Netbeans。我用的是Netbeans 7.0,教程推荐Netbeans 6.8-6.9。通常改编很容易(显示的元素顺序不同,或者有更多字段)。
该教程在第三章中指出:“确保取消选择'Enable Contexts and Dependency Injection'选项。 ”
对于第 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
}
当他们说要运行它时,我尝试运行它,并且NullPointerException
在第 37 行收到一条消息。第 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 吗?sun-*
唯一显着的区别是Netbeans 6.9 和glassfish-*
Netbeans 7.0中的一些 xml 文件的文件名。