Issue description
Hi, there are multiple versions of com.fasterxml.jackson.core:jackson-core in yql-plus-master(language module). As shown in the following dependency tree, library com.fasterxml.jackson.core:jackson-core:2.9.10 is transitively introduced by com.fasterxml.jackson.core:jackson-databind:2.9.10.3, but has been managed to be version 2.7.9.
However, several methods defined in shadowed version com.fasterxml.jackson.core:jackson-core:2.9.10 are referenced by client project via com.fasterxml.jackson.core:jackson-databind:2.9.10.3, but missing in the actually loaded version com.fasterxml.jackson.core:jackson-core:2.7.9.
For instance, the following missing methods(defined in com.fasterxml.jackson.core:jackson-core:2.9.10) are actually referenced by yql-plus-master(language module), which will introduce a runtime error(i.e., "NoSuchMethodErrors") into yql-plus-master(language module).
1. com.fasterxml.jackson.core.JsonGenerator: void writeFieldId(long) is invoked by yql-plus-master(language module) via the following path:
paths------
<com.yahoo.yqlplus.language.operator.JsonOperatorDump$ProgramDumpModule$1: void serialize(com.yahoo.yqlplus.language.operator.OperatorNode,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> yql-plus-master\yqlplus_language\target\classes
fasterxml.jackson.databind.SerializerProvider: void defaultSerializeValue(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.StdKeySerializers$Default: void serialize(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.core.JsonGenerator: void writeFieldId(long)>
2. com.fasterxml.jackson.core.JsonGenerator: com.fasterxml.jackson.core.type.WritableTypeId writeTypeSuffix(com.fasterxml.jackson.core.type.WritableTypeId) is invoked by yql-plus-master(language module) via the following path:
paths------
<com.yahoo.yqlplus.language.operator.JsonOperatorDump$ProgramDumpModule$1: void serialize(com.yahoo.yqlplus.language.operator.OperatorNode,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> yql-plus-master\yqlplus_language\target\classes
<com.fasterxml.jackson.databind.SerializerProvider: void defaultSerializeValue(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer: void serialize(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.impl.UnknownSerializer: void serializeWithType(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider,com.fasterxml.jackson.databind.jsontype.TypeSerializer)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.jsontype.impl.TypeSerializerBase: com.fasterxml.jackson.core.type.WritableTypeId writeTypeSuffix(com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.core.type.WritableTypeId)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.core.JsonGenerator: com.fasterxml.jackson.core.type.WritableTypeId writeTypeSuffix(com.fasterxml.jackson.core.type.WritableTypeId)>
3. com.fasterxml.jackson.core.JsonGenerator: void writeEmbeddedObject(java.lang.Object) is invoked by yql-plus-master(language module) via the following path:
paths------
<com.yahoo.yqlplus.language.operator.JsonOperatorDump$ProgramDumpModule$1: void serialize(com.yahoo.yqlplus.language.operator.OperatorNode,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> yql-plus-master\yqlplus_language\target\classes
<com.fasterxml.jackson.databind.SerializerProvider: void defaultSerializeValue(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.TokenBufferSerializer: void serialize(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.TokenBufferSerializer: void serialize(com.fasterxml.jackson.databind.util.TokenBuffer,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.util.TokenBuffer: void serialize(com.fasterxml.jackson.core.JsonGenerator)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.core.JsonGenerator: void writeEmbeddedObject(java.lang.Object)>
4. com.fasterxml.jackson.core.JsonGenerator: com.fasterxml.jackson.core.type.WritableTypeId writeTypePrefix(com.fasterxml.jackson.core.type.WritableTypeId) is invoked by yql-plus-master(language module) via the following path:
paths------
<com.yahoo.yqlplus.language.operator.JsonOperatorDump$ProgramDumpModule$1: void serialize(com.yahoo.yqlplus.language.operator.OperatorNode,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> yql-plus-master\yqlplus_language\target\classes
<com.fasterxml.jackson.databind.SerializerProvider: void defaultSerializeValue(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer: void serialize(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.impl.UnknownSerializer: void serializeWithType(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider,com.fasterxml.jackson.databind.jsontype.TypeSerializer)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.jsontype.impl.TypeSerializerBase: com.fasterxml.jackson.core.type.WritableTypeId writeTypePrefix(com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.core.type.WritableTypeId)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.core.JsonGenerator: com.fasterxml.jackson.core.type.WritableTypeId writeTypePrefix(com.fasterxml.jackson.core.type.WritableTypeId)>
5. com.fasterxml.jackson.core.JsonpCharacterEscapes: com.fasterxml.jackson.core.JsonpCharacterEscapes instance() is invoked by yql-plus-master(language module) via the following path:
paths------
<com.yahoo.yqlplus.language.operator.JsonOperatorDump: java.lang.String dump(com.yahoo.yqlplus.language.operator.OperatorNode)> yql-plus-master\yqlplus_language\target\classes
<com.fasterxml.jackson.databind.ObjectWriter: java.lang.String writeValueAsString(java.lang.Object)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ObjectWriter: void _configAndWriteValue(com.fasterxml.jackson.core.JsonGenerator,java.lang.Object)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ObjectWriter$Prefetch: void serialize(com.fasterxml.jackson.core.JsonGenerator,java.lang.Object,com.fasterxml.jackson.databind.ser.DefaultSerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.DefaultSerializerProvider: void serializePolymorphic(com.fasterxml.jackson.core.JsonGenerator,java.lang.Object,com.fasterxml.jackson.databind.JavaType,com.fasterxml.jackson.databind.JsonSerializer,com.fasterxml.jackson.databind.jsontype.TypeSerializer)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.JsonValueSerializer: void serializeWithType(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider,com.fasterxml.jackson.databind.jsontype.TypeSerializer)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.SerializableSerializer: void serialize(java.lang.Object,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.ser.std.SerializableSerializer: void serialize(com.fasterxml.jackson.databind.JsonSerializable,com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.databind.util.JSONPObject: void serialize(com.fasterxml.jackson.core.JsonGenerator,com.fasterxml.jackson.databind.SerializerProvider)> Repositories\com\fasterxml\jackson\core\jackson-databind\2.9.10.3\jackson-databind-2.9.10.3.jar
<com.fasterxml.jackson.core.JsonpCharacterEscapes: com.fasterxml.jackson.core.JsonpCharacterEscapes instance()>
Suggested fixing solutions
Declare a direct dependency com.fasterxml.jackson.core:jackson-core:2.9.10 in the pom file of yql-plus-master(language module), to override com.fasterxml.jackson.core:jackson-core's managed version.
Thank you very much for your attention.
Best regards,
Dependency tree----
[INFO] com.yahoo.yqlplus:yqlplus_language:jar:1.0.16
[INFO] +- org.testng:testng:jar:6.8.5:test
[INFO] | +- org.beanshell:bsh:jar:2.0b4:test
[INFO] | +- com.beust:jcommander:jar:1.27:test
[INFO] | \- org.yaml:snakeyaml:jar:1.6:test
[INFO] +- org.antlr:antlr4-runtime:jar:4.5:compile
[INFO] | \- org.abego.treelayout:org.abego.treelayout.core:jar:1.0.1:compile
[INFO] +- com.google.guava:guava:jar:24.1.1-jre:compile
[INFO] | +- (com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 2.0.1)
[INFO] | +- org.checkerframework:checker-compat-qual:jar:2.0.0:compile
[INFO] | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:compile
[INFO] | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile
[INFO] | \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile
[INFO] +- com.google.code.findbugs:jsr305:jar:2.0.1:provided (scope not updated to compile)
[INFO] +- com.google.inject:guice:jar:4.0:compile
[INFO] | +- javax.inject:javax.inject:jar:1:compile
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile
[INFO] | \- (com.google.guava:guava:jar:24.1.1-jre:compile - version managed from 16.0.1; omitted for duplicate)
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.7.9:compile
[INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.10.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.10:compile
[INFO] \- (com.fasterxml.jackson.core:jackson-core:jar:2.7.9:compile - version managed from 2.9.10; omitted for duplicate)