我使用objectPlanet的第三方工具稱爲easyChart來生成圖形圖表。他們提供了一種稱爲Chart.jar和ChartServer.jar使用不同JVM版本的java序列號
我寫在服務器端的easyChart對象一個jar lib目錄下:
Chart chart = new BarChart();
... <create chart data here> ...
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutputStream oStream = new ObjectOutputStream(bStream);
oStream.writeObject (chart);
byte[] byteVal = bStream.toByteArray();
String chartInString = Base64.encode(byteVal);
和讀回在客戶端:
byte[] readByte = Base64.decode(chartInString);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(readByte));
Chart chart = (Chart) ois.readObject();
它的工作原理很好,當服務器和客戶端具有相同的JVM版本。我意識到GenericChart實現序列化(這個類在提供的jar中)。
我怎麼能克服這個問題,因爲我不能修改他們提供的jar類?
非常感謝任何答覆。 謝謝!
您遇到過哪些問題? – Henry 2013-02-18 09:37:06
可以說:寫圖表對象時服務器使用Java 6更新27。我使用2個客戶端機器:第一次使用Java 6更新27,我可以讀取Chart對象,第二次使用Java 7,我無法讀取Chart對象,它引發此異常:java.io.InvalidClassException:javax.swing.JComponent ;本地類不兼容:stream classdesc serialVersionUID = -1030230214076481435,本地類serialVersionUID = 5670834184508236790 – baizen 2013-02-18 09:39:39