Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error on schema creation with spqr v0.9.7 - NoSuchMethodError: graphql.schema.GraphQLFieldDefinition.getDirectives()Ljava/util/List; #98

Closed
aSemy opened this issue Apr 11, 2018 · 2 comments

Comments

@aSemy
Copy link

aSemy commented Apr 11, 2018

Hey,

I can't track down cause of the error. The stack trace, at the bottom of this issue. It seems to happen immediately on the first DTO class, which has a LocalDate:

public class ReadingDTO extends DatabaseDTO {
	private LocalDate date;
// ... code ...
	@GraphQLQuery(name = "date", description = "Date of the reading")
	public LocalDate getDate() {
		return date;
	}
// ... code ...
}

I've tried copy and pasting my same DTO objects into the sample spqr project but couldn't recreate the NoSuchMethodError. During schema creation I tried commenting out each of the queries/mutators, one by one, but that didn't help, the error always occurred.

I'm not sure how to track down this error - could you help? Thanks!

2018-04-10 14:37:12.437 ERROR 78089 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'graphQlSampleController' defined in file [/Users/adam/git/[...]/api/controller/GraphQlSampleController.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [[...].api.controller.GraphQlSampleController]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: graphql.schema.GraphQLFieldDefinition.getDirectives()Ljava/util/List;
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:279) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at [...].Application.main(Application.java:14) [classes/:na]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [[...].api.controller.GraphQlSampleController]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: graphql.schema.GraphQLFieldDefinition.getDirectives()Ljava/util/List;
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:271) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	... 18 common frames omitted
Caused by: java.lang.NoSuchMethodError: graphql.schema.GraphQLFieldDefinition.getDirectives()Ljava/util/List;
	at io.leangen.graphql.generator.types.MappedGraphQLFieldDefinition.<init>(MappedGraphQLFieldDefinition.java:16) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLField(OperationMapper.java:162) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.lambda$getFields$3(ObjectTypeMapper.java:80) ~[spqr-0.9.7.jar:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
	at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1676) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:511) ~[na:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.getFields(ObjectTypeMapper.java:81) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.toGraphQLType(ObjectTypeMapper.java:40) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.toGraphQLType(ObjectTypeMapper.java:32) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.CachingMapper.toGraphQLType(CachingMapper.java:27) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLType(OperationMapper.java:176) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ListMapper.toGraphQLType(ListMapper.java:21) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLType(OperationMapper.java:176) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLField(OperationMapper.java:136) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.lambda$getFields$3(ObjectTypeMapper.java:80) ~[spqr-0.9.7.jar:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
	at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1676) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:511) ~[na:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.getFields(ObjectTypeMapper.java:81) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.toGraphQLType(ObjectTypeMapper.java:40) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.ObjectTypeMapper.toGraphQLType(ObjectTypeMapper.java:32) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.mapping.common.CachingMapper.toGraphQLType(CachingMapper.java:27) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLType(OperationMapper.java:176) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.toGraphQLField(OperationMapper.java:136) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.lambda$generateQueries$0(OperationMapper.java:89) ~[spqr-0.9.7.jar:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na]
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1494) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na]
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na]
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:511) ~[na:na]
	at io.leangen.graphql.generator.OperationMapper.generateQueries(OperationMapper.java:90) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.generator.OperationMapper.<init>(OperationMapper.java:73) ~[spqr-0.9.7.jar:na]
	at io.leangen.graphql.GraphQLSchemaGenerator.generate(GraphQLSchemaGenerator.java:892) ~[spqr-0.9.7.jar:na]
	at [...].api.controller.GraphQlSampleController.<init>(GraphQlSampleController.java:115) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488) ~[na:na]
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	... 20 common frames omitted
@kaqqao
Copy link
Member

kaqqao commented Apr 11, 2018

Looks like you're overriding the graphql-java version in your project (which is rather dangerous). SPQR 0.9.7 depends on graphql-java 8.0, so if you're explicitly declaring dependency to 7.0, I'd expect this to happen.
Does that help?

@aSemy
Copy link
Author

aSemy commented Apr 11, 2018

You've got it in one, thanks for the very quick help @kaqqao!

@aSemy aSemy closed this as completed Apr 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants