Open sh0rt2l0ng opened 9 months ago
The error you're seeing, java.lang.NoSuchMethodError, indicates that the method writeStartArray(Object, int) is not found in the class com.fasterxml.jackson.core.JsonGenerator. This suggests that there's a discrepancy between the versions of the libraries you're using.
Are you running the submit within a container or on your local machine? In the latter case, could there be any other libraries in the CLASSPATH that might interfere with those from IgnisHPC?
I am just following the guide and run like this.
./ignis/bin/ignis-submit ignishpc/full bigseqkit
I created a clean environment for bigseqkit with conda. Everything is fine until running into this. Not sure what libraries you are mentioning. Contents in submit script:
Do I miss anything here?
Is this because of incompatible jackson lib in wsl2? This is the wsl2 version. Package: libjackson-json-java Version: 1.9.13-1
From submit script, I just thought bigseqkit should use own jre and lib in ${IGNIS_HOME}. But maybe I am wrong.
The image "ignishpc/full", did you build it yourself?
I downloaded the latest version from DockerHub and here are the Java libraries (ls ./ignis/lib/java/jackson*):
jackson-annotations-2.10.3.jar jackson-core-2.10.3.jar jackson-databind-2.10.3.jar jackson-dataformat-cbor-2.6.7.jar jackson-datatype-jdk8-2.9.9.jar jackson-annotations-2.9.9.jar jackson-core-2.9.9.jar jackson-databind-2.9.9.3.jar jackson-datatype-guava-2.9.9.jar jackson-datatype-protobuf-0.9.10-jackson2.9-proto3.jar
The version you mentioned isn't included.
I just pulled the docker not built it. What I mean is that whether the jackson version in wsl2 will affect ignis. The exported lib dir contains those you list here.
jackson-annotations-2.10.3.jar jackson-core-2.10.3.jar jackson-databind-2.10.3.jar jackson-dataformat-cbor-2.6.7.jar jackson-datatype-jdk8-2.9.9.jar jackson-annotations-2.9.9.jar jackson-core-2.9.9.jar jackson-databind-2.9.9.3.jar jackson-datatype-guava-2.9.9.jar jackson-datatype-protobuf-0.9.10-jackson2.9-proto3.jar
I assumed ignis should use them instead of jackson lib in wsl2, right?
Yes, to avoid incompatibilities, you shouldn't add any extra libraries. The error you showed is because you're trying to use jackson-core-2.10.3.jar with libjackson-json-java-1.*. Remove 1.9.13-1 from your WSL2's CLASSPATH, and the issue should disappear.
My WSL2's CLASSPATH is empty. I don't think we are using anything other than those in $IGNIS_HOME/lib/java/. But the error is still the same. Any other thing needs to be set in order to run this tool? Thanks.
Is this because of incompatible jackson lib in wsl2? This is the wsl2 version. Package: libjackson-json-java Version: 1.9.13-1
Where is that Java library located then?
As you can see in the stack trace, the error indicates that the method com.fasterxml.jackson.core.JsonGenerator.writeStartArray(java.lang.Object, int) does not exist. And it matches with that library because if we look at the Javadoc for version 1.9.13 (link), we can see that this method doesn't exist with those parameters, whereas if we look at version 2.10 (link), we see that it does exist.
Can you remove that library and try again?
This should use jre and lib in ignis folder as I understand. But why it still report this error?
Exception in thread "main" java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.core.JsonGenerator.writeStartArray(java.lang.Object, int)' at com.fasterxml.jackson.databind.ser.impl.StringArraySerializer.serialize(StringArraySerializer.java:170) at com.fasterxml.jackson.databind.ser.impl.StringArraySerializer.serialize(StringArraySerializer.java:22) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:722) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:4110) at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3437) at com.github.dockerjava.core.DefaultInvocationBuilder.encode(DefaultInvocationBuilder.java:292) at com.github.dockerjava.core.DefaultInvocationBuilder.post(DefaultInvocationBuilder.java:121) at com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:37) at com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:13) at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21) at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) at com.github.dockerjava.core.command.CreateContainerCmdImpl.exec(CreateContainerCmdImpl.java:609) at org.ignis.scheduler.Docker.createDriverContainer(Docker.java:318) at org.ignis.submitter.Submit.call(Submit.java:186) at org.ignis.submitter.Submit.call(Submit.java:46) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine.execute(CommandLine.java:2078) at org.ignis.submitter.Submit.main(Submit.java:284)