2012-10-10 53 views
2

我有一個Java程序(罐子),序列化一個類與ObjectOutputStream文件。 我需要在.NET項目中使用該程序的這一部分,並且爲此我已將該jar轉換爲使用ikvmc.exe的.NET dll。 一切工作正常,但序列化的文件在某些​​部分與直接使用java程序序列化的部分不同。 你有一些建議有相同的序列化文件?IKVM.NET對象序列化與ObjectOutputStream的區別

+0

是否有*無*您可以更改Java代碼以序列化爲更便攜的格式? –

+0

不,我不能。我必須將這些序列化文件發送到不是我的java web服務。 –

+0

使用* Java二進制序列化*作爲輸入格式的Web服務? Ewww,那很討厭。你有我的同情心:(說實話,你可能是最好的運行一個本地Java二進制文件(不是IKVM,只是普通的Java),它需要一個更加健全的輸入形式(例如JSON),並且*僅負責序列化。 –

回答

1

如果您在兩邊使用相同的編譯類,Java序列化和反序列化只能很好地工作。如果您序列化Java VM運行時的類,那麼您應該在兩邊使用完全相同的VM版本。在另一種情況下,類可以有不同的serialVersionUID。

取決於IKVM版本,它取決於不同的OpenJDK版本。例如基於OpenJDK 1.7.0的版本7.x。

+0

我需要的java程序,序列化一個Vector對象,其中包含一些其他自定義對象。可能序列化與OpenJDK 1.7和Sun 1.7生成不同的文件,因爲Vector類具有不同的serialVersionUID,是正確? –

+0

OpenJDK和Sun/Oracle JDK之間的差異很小,1.6和1.7之間的差異可能會更大,但Vector類不是一個問題。沒有收到答案的確切錯誤信息就像是讀一個水晶球。 – Horcrux7