【问题标题】:method missing on web application classpathWeb 应用程序类路径中缺少方法
【发布时间】:2013-01-02 09:56:42
【问题描述】:

新年快乐!

我遇到了 Web 应用程序的类路径问题。我有两个基于 Maven 的模块

  1. API
  2. 使用 api 的 Web 应用程序

有一个在api中存储数据的功能,可以正常工作,没有任何问题,但是当从web应用程序(使用tomcat容器)调用相同的方法时,它会抛出以下异常

Dec 27, 2012 9:18:03 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [spring] in context with path [/xyz-service] threw exception [Handler processing failed; nested exception is java.lang.NoSuchMethodError: com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl.setBaseWriterClassName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;] with root cause
java.lang.NoSuchMethodError: com.hp.hpl.jena.rdf.model.impl.RDFWriterFImpl.setBaseWriterClassName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    at org.openjena.riot.SysRIOT.wireIntoJena(SysRIOT.java:93)
    at org.openjena.riot.RIOT.init(RIOT.java:61)
    at com.hp.hpl.jena.query.ARQ.init(ARQ.java:458)
    at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:463)
    at com.ontotext.jena.SesameJena.getContext(Unknown Source)
    at com.ontotext.jena.SesameJena.wireExecution(Unknown Source)
    at com.ontotext.jena.SesameJena.<clinit>(Unknown Source)
    at com.ontotext.jena.SesameDataset.<clinit>(Unknown Source)
    at me.xyz.api.ontoop.service.OWLIMInferencing.getScore(OWLIMInferencing.java:63)
    at me.xyz.service.impl.FacebookRegisterServiceImpl.persistUserInfo(FacebookRegisterServiceImpl.java:109)
    at me.xyz.service.impl.RegisterServiceImpl.registerUseronfirstVist(RegisterServiceImpl.java:40)
    at me.xyz.controller.UserController.validate(UserController.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    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:225)
    at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:123)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:168)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    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:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  at java.lang.Thread.run(Thread.java:680)

当我尝试导出网络应用程序战争时,它的 jar 包含具有报告为未找到的方法的类。

注意:来自 api 的所有其他类都可以正常工作,没有任何问题,但只有在调用此特定方法时才会出现此问题。

Web 应用程序是使用 spring、jpa 构建的。

提前感谢您的及时帮助。 谢谢

【问题讨论】:

  • 请添加相关的maven依赖。

标签: spring jakarta-ee maven classpath


【解决方案1】:

看来你需要一个依赖:

<dependency>
    <groupId>com.hp.hpl.jena</groupId>
    <artifactId>jena</artifactId>
    <version>2.6.4</version>
</dependency>

或者可能:

<dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena</artifactId>
    <version>2.7.4</version>
</dependency>

您应该检查是否没有依赖冲突。可能您的 web 应用正在加载不兼容的依赖项。

【讨论】:

  • 嗨,感谢您的及时回复,但我已经将这些依赖项添加到 pom 中,当我从 main 方法调用它时,此功能工作正常,但通过 spring 控制器调用时抛出异常(运行作为网络应用程序)
  • 你应该检查是否没有依赖冲突。可能您的 web 应用正在加载不兼容的依赖项。
  • 谢谢 asgoth,Pellet 和 jena arq 之间存在依赖冲突。两者都使用耶拿核心,但版本不同。在颗粒依赖中排除耶拿核心起到了作用:)
  • @Gopalharis 我在使用 Maven、Jena 和 Pellet 时遇到了同样的问题,我似乎无法修复它。你能分享你的pom文件吗?你是如何“在颗粒依赖中排除耶拿核心”的?请帮帮我
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多