Java 如何解决olingo odata V2$过滤器错误?

Java 如何解决olingo odata V2$过滤器错误?,java,jpa,filter,odata,olingo,Java,Jpa,Filter,Odata,Olingo,大家好 我有一个olingo OData V2服务,它工作得几乎完美。积垢方法由邮递员测试。它在Tomcat上运行,数据库是MySQL,项目在Eclipse中 这是服务的代码: package main; import org.apache.olingo.odata2.jpa.processor.ref.factory.JPAEntityManagerFactory; import org.apache.olingo.odata2.processor.api.jpa.ODataJPAConte

大家好

我有一个olingo OData V2服务,它工作得几乎完美。积垢方法由邮递员测试。它在Tomcat上运行,数据库是MySQL,项目在Eclipse中

这是服务的代码:

package main;

import org.apache.olingo.odata2.jpa.processor.ref.factory.JPAEntityManagerFactory;
import org.apache.olingo.odata2.processor.api.jpa.ODataJPAContext;
import org.apache.olingo.odata2.processor.api.jpa.ODataJPAServiceFactory;
import org.apache.olingo.odata2.processor.api.jpa.exception.ODataJPARuntimeException;

public class ODataServiceFromGenerator extends ODataJPAServiceFactory {  
      private static final String PERSISTENCE_UNIT_NAME = "cars";

    @Override
    public ODataJPAContext initializeODataJPAContext() {

        ODataJPAContext oDataJPAContext;
        try {
            oDataJPAContext = getODataJPAContext();
            oDataJPAContext.setEntityManagerFactory(JPAEntityManagerFactory
                    .getEntityManagerFactory(PERSISTENCE_UNIT_NAME));
            oDataJPAContext.setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
            return oDataJPAContext;
        } catch (ODataJPARuntimeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }

  }

}
我可以访问此url中的元数据: http://localhost:8080/GeneratorTry/cars.svc/$metadata

当我尝试筛选一个实体集时 ( http://localhost:8080/GeneratorTry/cars.svc/Vendors?$filter=startswith(移动,+36')) 我得到这个错误:

HTTP状态500–内部服务器错误类型异常报告

消息org.apache.cxf.interceptor.Fault: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl

说明服务器遇到意外情况 这使它无法满足请求

异常

java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:331) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) org.apache.cxf.transport.servlet.AbstractHTTPServlet.HandlerRequest(AbstractHTTPServlet.java:243) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) javaservlet.http.HttpServlet.service(HttpServlet.java:634) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因

org.apache.cxf.interceptor.Fault: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:261) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) org.apache.cxf.transport.servlet.AbstractHTTPServlet.HandlerRequest(AbstractHTTPServlet.java:243) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) javaservlet.http.HttpServlet.service(HttpServlet.java:634) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因

java.lang.NoClassDefFoundError: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.olingo.odata2.core.uri.UriParserImpl.parseOrderByString(UriParserImpl.java:848) org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptionOrderBy(UriParserImpl.java:604) org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptions(UriParserImpl.java:560) org.apache.olingo.odata2.core.uri.UriParserImpl.parse(UriParserImpl.java:114) org.apache.olingo.odata2.core.ODataRequestHandler.handle(ODataRequestHandler.java:101) org.apache.olingo.odata2.core.rest.ODataSubLocator.handle(ODataSubLocator.java:148) org.apache.olingo.odata2.core.rest.ODataSubLocator.handleGet(ODataSubLocator.java:53) sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) sun.reflect.NativeMethodAccessorImpl.invoke(未知源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源) java.lang.reflect.Method.invoke(未知源) org.apache.cxf.service.invoker.AbstractInvoker.PerformInvoke(AbstractInvoker.java:180) org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:261) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apach java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:331) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) org.apache.cxf.interceptor.Fault: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:261) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) java.lang.NoClassDefFoundError: org.apache.olingo.odata2.core.uri.expression.FilterParserImpl org.apache.olingo.odata2.core.uri.UriParserImpl.parseOrderByString(UriParserImpl.java:848) org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptionOrderBy(UriParserImpl.java:604) org.apache.olingo.odata2.core.uri.UriParserImpl.handleSystemQueryOptions(UriParserImpl.java:560) org.apache.olingo.odata2.core.uri.UriParserImpl.parse(UriParserImpl.java:114) org.apache.olingo.odata2.core.ODataRequestHandler.handle(ODataRequestHandler.java:101) org.apache.olingo.odata2.core.rest.ODataSubLocator.handle(ODataSubLocator.java:148) org.apache.olingo.odata2.core.rest.ODataSubLocator.handleGet(ODataSubLocator.java:53) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180) org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:261) org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94) org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158) org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:168) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)