ExecutionStrategy构造函数方法上的异常java.lang.NoSuchMethodError

时间:2018-09-04 14:52:41

标签: java graphql

我正在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上导入的版本。

1 个答案:

答案 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加载。然后,您可以检查其版本是否正确。