java - ExecutionStrategy 构造方法上的异常 java.lang.NoSuchMethodError
问题描述
我在一个 Java 项目上使用 GraphQL,它在服务器上工作。当我更改为另一台服务器时,它停止工作并抛出以下异常:
java.lang.NoSuchMethodError: graphql.execution.ExecutionStrategy.(Lgraphql/execution/DataFetcherExceptionHandler;)V at graphql.execution.AbstractAsyncExecutionStrategy.(AbstractAsyncExecutionStrategy.java:19) at graphql.execution.AsyncExecutionStrategy.(AsyncExecutionStrategy.java:23) at graphql.GraphQL$Builder.(GraphQL.java:199) 在 graphql.GraphQL.newGraphQL(GraphQL.java:166)
我使用的是完全相同的 Java 版本(1.8.0_181)、相同的 graphql-java 依赖版本(7.0)和相同的项目版本。
我错过了什么吗?有同样问题的人吗?
提前致谢,
解决方案
在分析了我的每个项目依赖项的依赖项后,我注意到graphql-java-annotations正在导入 3.0 版的 graphql-java 库。graphql-java 库是我之前提到的项目依赖项之一(使用的是 7.0 版)。
因此,两个不同版本的 graphql-java 被引用并相互冲突。
为了解决这个问题,我删除了 graphql-java 依赖项,并开始只使用在 graphql-java-annotations 上导入的版本。
解决方案
通常这是因为依赖冲突。
您可以将其添加到您的 pom 中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerArgs>
<arg>-verbose</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
然后尝试打包您的应用程序,它将记录graphql.execution.ExecutionStrategy
从哪个 jar 加载该类。然后你可以检查它是否是正确的版本。
推荐阅读
- c# - 如何为列表中的重复数据分配不同的 ID
- c# - 如何同时运行多个 dotnet run 命令
- flutter - 如何将字符串列表存储在共享首选项中?并在小部件中打印该列表?
- javascript - TypeError: js_cookie__WEBPACK_IMPORTED_MODULE_16___default(...) 不是函数
- powerbi - 如何对 DAX 函数相关性进行故障排除?
- apache-flink - 在 Datadog 中找不到 Flink 直方图指标
- sql-server - 不支持理解时使用压缩备份和还原 SQL Server 数据库
- sql - 在 Postgres JSONB 中搜索特定值?
- firebase - 无法添加颤振包flutter_facebook_login:^3.0.0,在调试模式下,应用程序被安装并立即关闭
- excel - 使用过滤器功能时如何排除带有空白单元格的列?