我们正在将 OSGi 应用程序的dev 环境从 Java 8 编译迁移到 Java 11 编译。
目前,该应用程序在 Java 8 编译和 Java 11 运行时执行下运行良好。
我们在 Java 11 中编译代码并进行部署时,它给我们以下错误:
Caused by: java.lang.ClassCastException: class <package>.ClassA cannot be cast to class [B (<package>.ClassA is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7112dbb8; [B is in module java.base of loader 'bootstrap')
at <some counumer package>.ConsumerClass.getKey(ConsumerClass.java:94)
at <some counumer package>.ProcessEventsActivity.processEvents(ProcessEventsActivity.java:129)
at jdk.internal.reflect.GeneratedMethodAccessor125.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Dele
public T getKey() throws Exception {
if (isExternal) {
return (T) new MessageExternalEntity<>(myRecord.key()); // This line throws exception on constructor argument casting while calling. Constructor given below.
}
else {
return (T) myEntityRecord.key();
}
}
public MessageExternalEntity(final T externalObject) { // This line throws exception
myExternalObject = externalObject;
}
工作环境和非工作环境之间的唯一区别是在非工作环境中在 Java 11 上的编译。请在这里提出根本原因和可能的前进方向。
Java 11 编译代码是否更改了一些通用处理?