【发布时间】:2014-06-20 02:37:53
【问题描述】:
我在链接这两个东西时遇到问题 - Apache Mahout 和 Java Web 应用程序集成。
我使用标准 Java Web 应用程序 Maven 项目和 Jersey 2.4 来构建我的网络服务。我的应用服务器是 Apache Tomcat 7。
当我在没有 Mahout 的情况下运行这个项目并尝试:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" 'http://myhost:8089/ensembleRestApi/recommeng/algorithm/articleCore/cf?limit=5'
我得到了响应,也可以通过源代码(带调试器)
但是当我将 Mahot 依赖项添加到我的 pom.xml 文件时:
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.9</version>
</dependency>
并尝试执行相同的 curl 命令,但在我的源代码中调用 webservice 方法中的断点之前,我得到了这个 AbstractMethodError:
请问您知道问题出在哪里吗?
SEVERE: Servlet.service() for servlet [jersey-serlvet] in context with path [/ensembleRestApi] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:286)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
【问题讨论】:
-
我会假设你没有添加一个真正的实现(AbstractMethodError)?
-
这是什么意思? AbstractMethodError 通常是由不兼容的 Jersey 版本引起的(参见 google - tinyurl.com/lh8s9pm)......但这不是我的问题。我已经实现了基于用户的协同过滤(这里是pastebin.com/k2WjsQhV),它作为一个独立的 Java 应用程序工作。但是当我将它添加到这个 Web 应用程序中时.. 出现上述错误。
标签: rest maven mahout jersey-2.0