[英]Is db4o Java 8 compatible?
具有使用db4o的辅助项目。 它不适用于JVM 8(在反序列化时, Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.xxx.yyy.version to com.db4o.reflect.generic.GenericObject
)。
快速解答: Db4o IS兼容Java8。这是休眠代理问题(Javassist和动态类):(
更新07/20/15: 不确定db4o是否100%在JVM 8下正常工作。我们有一个奇怪的测试用例,无法解释(请参阅下文)。 同时,本机Java序列化可以正常工作(但db4o不能)。
完整答案:如果有人需要详细信息,此问题将出现在Hibernate 4.3中(在以前的版本中,所有功能均按预期工作)。 不幸的是,我没有找到正确的解决方案。 快速而肮脏的解决方法是跳过问题字段从导出到db4o的操作(通过transient
关键字)。
15年7月30日更新:找到了解决方案(问题出现在Javassist 1.8中):
ProxyFactory.nameGenerator = new JavassitBackwardCompatibleNamingGenerator();
public class JavassitBackwardCompatibleNamingGenerator implements UniqueName{
private static int counter = 0;
@Override
public String get(String classname) {
return classname + "_$$_javassist_" + counter++;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.