2013-10-22 24 views
0

我试图在我的Linux服务器上运行一个jar文件。在我的Windows桌面,我可以就好使用命令来执行jar文件:java.io.StreamCorruptedException:无效的类型代码:9D

java -Xss1000m -XX:-UseGCOverheadLimit -Xmx5048m -jar test.jar 

然而,当我在我的Linux服务器上运行它,我得到以下错误:

java.io.StreamCorruptedException: invalid type code: 9D 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1374) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1988) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1912) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1795) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369) 
    at com.test.test.Main.main(Main.java:41) 

我的代码是:

​​
+0

序列化对象不存储在文本文件中。所以不要给它一个'txt'名字结尾。否则,请确保您的文件传输程序不会像使用程序选项的文本文件那样对待它。如果传输程序应用换行符和字符集编码转换,它们很可能会垃圾文件。 – Holger

+0

我测试过了。 WinSCP被设置为自动文件传输。我手动切换到二进制模式ac_geonames_country_all.txt文件。文件大小已更改,但错误保持不变。 –

+0

您是如何创建该文件的,您正在序列化的对象的定义是什么? – EJP

回答

0

我设法让它工作。我直接在Linux服务器上重新创建文件。现在一切正常。在文件传输过程中出现问题。或者Java在Linux上以不同的方式序列化文件。我没有任何线索。

@EJP感谢您指出了这一点。然后文件传输会弄乱文件。

+1

Java在Linux上不会序列化不同的文件。 – EJP

相关问题