[Java]Fury With IBM Semeru OpenJ9 run Error
Search before asking
- [x] I had searched in the issues and found no similar issues.
Version
Fury 0.9.0 ibm-semeru-open-jdk_x64_windows_8u432b06_openj9-0.48.0
Component(s)
Java
Minimal reproduce step
when i use ibm-semeru-open-jdk_x64_windows_8u432b06_openj9-0.48.0 then error message
`
Caused by: java.lang.NoClassDefFoundError: org.apache.fury.serializer.StringSerializer (initialization failure)
at java.lang.J9VMInternals.initializationAlreadyFailed(J9VMInternals.java:108)
at org.apache.fury.resolver.ClassResolver.addDefaultSerializers(ClassResolver.java:320)
at org.apache.fury.resolver.ClassResolver.initialize(ClassResolver.java:313)
at org.apache.fury.Fury.
Caused by: java.lang.IllegalArgumentException: Current jdk not supported
at org.apache.fury.util.Preconditions.checkArgument(Preconditions.java:58)
at org.apache.fury.serializer.StringSerializer.
What did you expect to see?
Caused by: java.lang.IllegalArgumentException: Current jdk not supported
What did you see instead?
fury can support openj9 with ibm-semeru-open-jdk
Anything Else?
No response
Are you willing to submit a PR?
- [ ] I'm willing to submit a PR!
package org.apache.fury.serializer;
public final class StringSerializer extends ImmutableSerializer<String>
// String length field for android.
Preconditions.checkArgument(
ReflectionUtils.getFieldNullable(String.class, "count") == null,
"Current jdk not supported");
Preconditions.checkArgument(
ReflectionUtils.getFieldNullable(String.class, "offset") == null,
"Current jdk not supported");
ibm-semeru-open-jdk_x64_windows_8u432b06_openj9-0.48.0 is not android
Hi @mail-ricklee-mail , thanks for reporting this issue. Would you like to submit a pr to fix it?
We could add a new path in writeJavaString:
public void writeJavaString(MemoryBuffer buffer, String value) {
if (STRING_WITH_OFFSET) {
writeStringWithOffset(buffer, value);
}
if (STRING_VALUE_FIELD_IS_BYTES) {
if (compressString) {
writeCompressedBytesString(buffer, value);
} else {
writeBytesString(buffer, value);
}
} else {
assert STRING_VALUE_FIELD_IS_CHARS;
if (compressString) {
writeCompressedCharsString(buffer, value);
} else {
writeCharsString(buffer, value);
}
}
}
StringSerializer#writeStringExpr also be updated.
Can Fix This bug Next Version?
We plan to make a new release in next week. If it can be fix this week, it will be fixed in next release version
thanks