java.lang.NoSuchMethodError: org.apache.servicecomb.swagger.invocation.context.InvocationContext.get

本文详细解析了在Java应用中遇到的NoSuchMethodError异常原因,通常由依赖的jar包版本不一致引起,尤其是快照版本的包。文章提供了具体的错误日志分析,指出问题发生在特定的业务逻辑调用过程中,并给出了在pom文件中配置解决方案,确保编译和运行环境的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
2019-01-30 14:25:04.635 [pool-2-thread-2] ERROR o.a.s.s.i.e.DefaultExceptionToResponseConverter - invoke failed, invocation=PRODUCER rest studentservice.StudentInfoController.findNewStuInfoReportList
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
java.lang.NoSuchMethodError: org.apache.servicecomb.swagger.invocation.context.InvocationContext.getContext(Ljava/lang/String;)Ljava/lang/String;
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at rx.Observable.unsafeSubscribe(Observable.java:8666)
        at com.server.edu.common.handler.util.SessionUtils.getCurrentSession(SessionUtils.java:184)
        at com.server.edu.studentservice.service.impl.StudentInfoServiceImpl.findNewStuInfoReportList(StudentInfoServiceImpl.java:1243)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at com.server.edu.studentservice.service.impl.StudentInfoServiceImpl$$FastClassBySpringCGLIB$$538d25e3.invoke(<generated>)
        at rx.Observable.subscribe(Observable.java:8759)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:667)
        at rx.Observable.subscribe(Observable.java:8726)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.Observable.subscribe(Observable.java:8619)
        at com.server.edu.studentservice.service.impl.StudentInfoServiceImpl$$EnhancerBySpringCGLIB$$fb372b07.findNewStuInfoReportList(<generated>)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at com.server.edu.studentservice.controller.StudentInfoController.findNewStuInfoReportList(StudentInfoController.java:394)
        at org.apache.servicecomb.bizkeeper.BizkeeperHandler.handle(BizkeeperHandler.java:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:152)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.Observable.unsafeSubscribe(Observable.java:8666)
        at com.huawei.paas.cse.tcc.handler.ProviderTccTransactionHandler.handle(ProviderTccTransactionHandler.java:58)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:152)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)
        at org.apache.servicecomb.qps.ProviderQpsFlowControlHandler.handle(ProviderQpsFlowControlHandler.java:49)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36)
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:152)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.doInvoke(SwaggerProducerOperation.java:160)
        at org.apache.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68)
        at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.syncInvoke(SwaggerProducerOperation.java:148)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:152)
        at org.apache.servicecomb.swagger.engine.SwaggerProducerOperation.invoke(SwaggerProducerOperation.java:115)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at org.apache.servicecomb.common.rest.AbstractRestInvocation.doInvoke(AbstractRestInvocation.java:179)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:40)
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:152)
        at org.apache.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:155)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$construct$2(BizkeeperCommand.java:79)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at org.apache.servicecomb.common.rest.AbstractRestInvocation.runOnExecutor(AbstractRestInvocation.java:139)
        at org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$scheduleInvocation$0(AbstractRestInvocation.java:127)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50)
        at java.lang.Thread.run(Thread.java:748)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
2019-01-30 14:25:04.635 [pool-2-thread-2] WARN  org.apache.servicecomb.bizkeeper.BizkeeperCommand - bizkeeper command failed due to:InvocationException: code=590;msg=CommonExceptionData [message=Cse Internal Server Error]
        at rx.Observable.unsafeSubscribe(Observable.java:8666)
        at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52)
2019-01-30 14:25:04.636 [pool-2-thread-2] WARN  org.apache.servicecomb.bizkeeper.BizkeeperHandler - bizkeeper ex

 

 

报错原因,pom文件引用了其它maven私服的包的一些jar包,但是这些jar包都是带快照版本的-SNAPSHOT

但是maven私服上的jar包是带时间戳的,导致里面的包里的一些方法找不到。

处理办法:给pom文件中添加如下代码

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.4.RELEASE</version>
                <configuration>
                    <mainClass>${main.class}</mainClass>
                    <layout>JAR</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

`java.lang.NoSuchMethodError: org.mybatis` 错误通常是由于在运行时找不到指定的方法引起的。这个错误可能由以下几个原因导致: 1. **版本不兼容**:使用的 MyBatis 版本与项目中其他依赖的版本不兼容。例如,某些方法在较新的 MyBatis 版本中已被弃用或删除。 2. **类路径问题**:项目中存在多个版本的 MyBatis 库,导致加载了错误的版本。 3. **依赖管理问题**:依赖管理工具(如 Maven 或 Gradle)配置错误,导致没有正确引入所需的依赖。 ### 解决方法 1. **检查版本兼容性**: - 确认项目中使用的 MyBatis 版本与所有相关依赖的版本兼容。可以通过查看 `pom.xml`(Maven)或 `build.gradle`(Gradle)文件来确认版本号。 2. **清理和重建项目**: - 使用 Maven 或 Gradle 清理项目并重新构建。命令如下: ```sh mvn clean install ``` 或 ```sh gradle clean build ``` 3. **检查类路径**: - 确保类路径中没有重复的 MyBatis 库。可以使用以下命令查看类路径中的库: ```sh mvn dependency:tree ``` 或 ```sh gradle dependencies ``` 4. **更新依赖**: - 如果发现依赖版本不兼容,尝试更新到兼容的版本。 ### 示例 假设你在使用 Maven 管理项目依赖,可以在 `pom.xml` 中添加或更新 MyBatis 依赖: ```xml <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!-- 其他依赖 --> </dependencies> ``` 然后运行 `mvn clean install` 来重建项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值