当前位置: 代码迷 >> WebSphere >> 报错sun.io.MalformedInputException
  详细解决方案

报错sun.io.MalformedInputException

热度:5603   发布时间:2013-02-26 00:00:00.0
报错求助sun.io.MalformedInputException
Websphere5.1.0+win2003企业版
jdk1.5已安装

将之前WIN2000系统下的一个项目复制到WIN2003系统下加载后,程序运行好象没有什么错,但后台日志中却大量发现以下异常
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O sun.io.MalformedInputException
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at java.lang.Throwable.<init>(Throwable.java)
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java)
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at java.io.InputStreamReader.convertInto(InputStreamReader.java:152)
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at java.io.InputStreamReader.fill(InputStreamReader.java)
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at java.io.InputStreamReader.read(InputStreamReader.java:264)
[09-1-1 23:55:52:250 CST] 37283728 SystemOut O at java.io.BufferedReader.fill(BufferedReader.java)
[09-1-1 23:55:52:265 CST] 37283728 SystemOut O at java.io.BufferedReader.readLine(BufferedReader.java)
[09-1-1 23:55:52:265 CST] 37283728 SystemOut O at java.io.BufferedReader.readLine(BufferedReader.java)
[09-1-1 23:55:52:265 CST] 37283728 SystemOut O at com.ibm.ws.webcontainer.jsp.compiler.ibmdebug.ClassLineModifier.createSourceToSourceVector(ClassLineModifier.java:157)
[09-1-1 23:55:52:265 CST] 37283728 SystemOut O at com.ibm.ws.webcontainer.jsp.compiler.ibmdebug.ClassLineModifier.prepareClassFileForDebug(ClassLineModifier.java:101)
[09-1-1 23:55:52:265 CST] 37283728 SystemOut O at com.ibm.ws.webcontainer.jsp.compiler.IBMDebugJavaCompiler.compile(IBMDebugJavaCompiler.java:145)

在网上搜索了一些类似的报错信息,有说是XML文档不符合规范,有说是JDK-IO问题,但种种解决方法都尝试过后问题依然存在,不知道各位有谁也遇到我一样的情况,或有哪位知道正确的解决方法的,希望提供一些帮助和指教。

------解决方案--------------------------------------------------------
有两个办法进行排查:

1、检查这个这个错误栈中是否能找到项目的类,如果找到从该类寻找线索。

2、将你们的项目从websphere服务器中卸载掉,看看后台会不会出同样的错误,这样可以确定是websphere服务器或者你们项目的问题。

另外,Websphere5.1.0应当使用其自身带的ibm jdk1.4而不是你的jdk1.5,所以你的类应当要使用1.4的level来编译。
------解决方案--------------------------------------------------------
可以在WAS的管理控制台里修改JVM参数,大致上有几个,各有不同的用法.
user.language=zh 
user.region=CN 
default.client.encoding=GBK 
client.encoding.override=GBK 
file.encoding=GBK 

但不管你怎么设置,都只能处理一种语言集,所以更全面的方法是确保每一种输入的数据象XML数据,都有正确的语言字符集标识.这样WAS就知道输入的数据是什么语言集的数据了,不然它只会当所有输入的数据都是上面设置的那一种.
------解决方案--------------------------------------------------------
应用程序服务器 > server1 > 服务器基础结构 ==> Java 和进程管理 ==> 进程定义 > Java 虚拟机 ==> 其他属性
通用 JVM 参数
-Ddefault.client.encoding=GBK -Dfile.encoding=GBK -Duser.language=zh -Duser.region=CN



-Ddefault.client.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=en -Duser.region=US

5.1对照着弄一下看