2

class に基づいて単純な GraphQL サーブレットを作成しましたSimpleGraphQLServlet。このクラスのコンストラクターは推奨されておらず、代わりにビルダーを使用することをお勧めします。だから私がしたことは、サーブレットのメソッドSimpleGraphQLServletで構築できるインスタンスにリクエストを転送する独自のサーブレットを提供することです。init

@WebServlet("/graphql")
public class GraphQLEndpoint extends HttpServlet {

    SimpleGraphQLServlet graphQLServlet;

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        graphQLServlet.service(req, resp);
    }

    @Override
    public void init() throws ServletException {
        graphQLServlet = SimpleGraphQLServlet.builder(buildSchema()).withInstrumentation(new TracingInstrumentation()).build();
    }

    private GraphQLSchema buildSchema() { /* ... */ }
}

ただし、SimpleGraphQLServletインスタンスが作成されると、次の例外がスローされます。

java.lang.NoClassDefFoundError: graphql/execution/instrumentation/NoOpInstrumentation
        at graphql.servlet.SimpleGraphQLServlet$Builder.<init>(SimpleGraphQLServlet.java:134) ~[graphql-java-servlet-4.7.0.jar:na]

クラスがjarファイルで利用できるように見えるので、これは奇妙ですgraphql-java-8.0.jar。次の依存関係を宣言しました。

dependencies {
    compile "com.graphql-java:graphql-java:8.0"
    compile "com.graphql-java:graphql-java-tools:4.3.0"
    compile "com.graphql-java:graphql-java-servlet:4.7.0"

    compile "org.slf4j:slf4j-simple:1.7.25"

    testCompile "junit:junit:3.8.1"
    providedCompile "javax.servlet:javax.servlet-api:3.0.1"
}

私は何を取りこぼしたか?

4

2 に答える 2

1

2020年の答え:

implementation 'com.graphql-java-kickstart:graphiql-spring-boot-starter:5.10.0'
implementation 'com.graphql-java-kickstart:graphql-spring-boot-starter:5.10.0'
implementation 'com.graphql-java-kickstart:graphql-java-tools:5.6.1'

それらの依存関係がありませんでした

于 2020-01-21T19:30:18.270 に答える