I have recently upgraded an application from Java 1.8 to Java 11 and started seeing this error
com.pricemax.util.exceptions.IllegalUsageError: java.lang.ClassCastException: class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap')
at com.pricemax.util.helpers.CharHelper.toCharArray(CharHelper.java:77)
at com.pricemax.etl.steps.transform.price.PricePatternParser.parse(PricePatternParser.java:87)
at com.pricemax.etl.steps.transform.price.PatternPriceSelector.cleanPrice(PatternPriceSelector.java:227)
at com.pricemax.etl.steps.transform.price.PatternPriceSelector.cleanPrice(PatternPriceSelector.java:152)
at com.pricemax.etl.steps.transform.price.PatternPriceSelector.performTransform(PatternPriceSelector.java:99)
at com.pricemax.etl.steps.transform.BaseTransform.performTransformARC(BaseTransform.java:62)
at com.pricemax.etl.steps.transform.BaseTransform.transformARC(BaseTransform.java:49)
at com.pricemax.etl.process.parallel.TransformThread.doWork(TransformThread.java:99)
at com.pricemax.etl.process.parallel.BaseParallelThread.run(BaseParallelThread.java:57)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassCastException: class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap')
at com.pricemax.util.helpers.CharHelper.toCharArray(CharHelper.java:73)
... 9 more
08/05/2022 17:46:47:0511 - [WARN] - Fatal error in parallel process
and when I got to line 77 in my charHelper.java class I see this function -
public static char[] toCharArray(String str) throws IllegalAccessException
{
try {
return (char[]) field.get(str); //line number 77
}
catch (Exception ex) {
throw new IllegalUsageError(ex);
}
}
where field is an instance of java.lang.reflect.Field class and at least from the error what I can interpret is the error is converting class type Byte (B) to class type Character (C). Correct me if I am understanding this wrong and How can I resolve this error? NOTE - I noticed some stackoverflow articles around same problem and few people mentioned that they had the same problem in moving from java 1.8 but did not find any solution to fix this. Thanks