我正在使用 mahout 0.9 版。我在演示服务器上获得了 NPE,并带有以下堆栈跟踪。
HTTP 状态 500 - 请求处理失败;嵌套异常是 java.lang.NullPointerException
类型异常报告
消息请求处理失败;嵌套异常是 java.lang.NullPointerException
描述服务器遇到一个内部错误,阻止它完成这个请求。
例外
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.lang.NullPointerException org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)根本原因
java.lang.NullPointerException org.apache.mahout.cf.taste.impl.recommender.TopItems.getTopUsers(TopItems.java:119) org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood.getUserNeighborhood(NearestNUserNeighborhood.java:94) org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender.recommend(GenericUserBasedRecommender.java:87) org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender.recommend(AbstractRecommender.java:63) .....recommendationengine.service.RecommendationService.findRecommendedProductsForOpportunityByMahout(RecommendationService.java:69) .....recommendationengine.controller.RecommendationController.recommendedForOpportunity(RecommendationController.java:54) sun.reflect.GeneratedMethodAccessor49.invoke(未知来源) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:491) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)note Apache Tomcat/7.0.40 日志中提供了根本原因的完整堆栈跟踪。
Apache Tomcat/7.0.40
重启服务器后调试问题未重现。我已经下载了 Mahout 0.9 的源代码,但无法理解如何在TopItems.java:119使用 NPE,如果topItems Queue 为空,则可能是一种情况,但如果我正确理解方法中的代码,这是不可能的。有人可以帮我解决这个 NPE 吗?
感谢你们。
如果howMany参数为 0,则可以更新NPE ,但我使用的是 5。将研究它....
更新 2 howMany参数不能小于 1,因为它是在 NearestNUserNeighborhood 的构造函数中检查的。我没有更多的想法...... :(