我正在尝试将Java Web Start应用程序从Java 1.6平台迁移到Java 1.7平台。服务器端采用Java1.6 (WebSphere应用服务器v8.5)。简单地说,应用程序是一个桌面应用程序,它使用http-client与服务器进行通信,并使用Java序列化进行数据传输。
我经历了一个奇怪的案例。如果我在Java1.6中运行该应用程序,则一切正常。当在Java1.7上运行的应用程序在调试模式下在服务器端发送数据值对象( DVO由其他HashMap和DVO组成)时,我可以看到DVO,但是当我想放入一个新对象(不是NULL!)我看到hashmap的元素大小增加了,但是值是空的。
真正奇怪的情况是。你可以看到下面的结果
HashMap map = getHashMapData();
System.out.println("####Iterate over keySet");
for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) {
Object key = (Object) iterator.next();
System.out.println(key +" : "+map.get(key));
}
System.out.println("####Iterate over entrySet");
for (Iterator it = map.entrySet().iterator(); it.hasNext();){
Entry e = (Entry) it.next();
System.out.println(e.getKey() +":"+ e.getValue());
}
System.out.println("###sysout map");
System.out.println(map);输出
####Iterate over keySet
[4/11/14 9:33:14:737 EEST] 00000095 SystemOut O persistData : null
[4/11/14 9:33:16:017 EEST] 00000095 SystemOut O processCodeDVO : null
####Iterate over entrySet
[4/11/14 9:33:18:169 EEST] 00000095 SystemOut O persistData:[27883271, 22644993]
[4/11/14 9:33:19:199 EEST] 00000095 SystemOut O processCodeDVO:test.dvo.ProcessCodeDVO@a31742c
###sysout map
[4/11/14 9:33:21:414 EEST] 00000095 SystemOut O {persistData=[27883271, 22644993], processCodeDVO=test.dvo.ProcessCodeDVO@a31742c}问题是什么?有什么建议吗?
谢谢。
发布于 2015-01-20 22:36:01
终于解决了。问题出现在hashmap上,该hashmap只有一个元素,并且之前被反序列化了。我打开一个pmr,下面是答案“对于SDK 6.0.1 (也称为Java1.6)和SDK 7.0 (也称为Java1.7),有不同的APAR代表相同的问题。Java6.0.1: IV56384这将包含在未来的版本中开发人员目前预测它将包含在IBMSDK6.0.1 SR8 Java7.0中: IV36796这是在IBMSDK7.0 SR4或更高版本中修复的”。
https://stackoverflow.com/questions/23005797
复制相似问题