我正在Java项目上使用GraphQL,并且正在服务器上工作。 当我切换到另一台服务器时,它停止工作,并抛出以下异常:
java.lang.NoSuchMethodError: graphql.execution.ExecutionStrategy。(Lgraphql / execution / DataFetcherExceptionHandler;)V 在graphql.execution.AbstractAsyncExecutionStrategy。(AbstractAsyncExecutionStrategy.java:19) 在graphql.execution.AsyncExecutionStrategy。(AsyncExecutionStrategy.java:23) 在graphql.GraphQL $ Builder。(GraphQL.java:199) 在graphql.GraphQL.newGraphQL(GraphQL.java:166)
我使用的是完全相同的Java版本(1.8.0_181),相同的graphql-java依赖版本(7.0)和相同的项目版本。
我想念什么吗?有同样问题的人吗?
预先感谢
分析了我每个项目依赖项的依赖关系后,我注意到 graphql-java-annotations 正在导入graphql-java库的3.0版。 如前所述,graphql-java库是我的项目依赖项之一(使用7.0版)。
因此,被引用的两个不同版本的graphql-java相互冲突。
为解决此问题,我删除了graphql-java依赖项,开始只使用在graphql-java-annotations上导入的版本。
答案 0 :(得分:1)
通常这是因为依赖冲突。
您可以将其添加到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加载。然后,您可以检查其版本是否正确。