`

异常sun.io.MalformedInputException的终极解决方法

    博客分类:
  • JAVA
阅读更多

      当你看到此文的时候,相信你正在费尽九牛二虎之力想把原本部署在windows操作系统tomcat下的项目部署到ibm小型机aix操作系统的tomcat下,又或者正在解析某个xml文件,如果是的话,请继续往下看,保证你不费吹灰之力就能把你的问题解决。

 

      出现此异常的原因是IBM在JDK 1.4版本中为了追求对io通道的高效率改变了JDK 1.3中对io通道中异常处理的策略。IBM JDK 1.4中对于io通道的异常处理更加严格,因此系统中会报上面的错误。看到这里你可能在想,可是我用的是1.5版本哦!其实1.4版本之后的版本都沿用了该策略。

 

      解决这一问题的办法是不使用IBM JDK 1.4中默认的io通道,而使用nio通道,而要实现这一点只需对tomcat的catalina.sh文件(该文件在bin目录下)作少少改动就可以达到目的,增加JAVA_OPTS="$JAVA_OPTS -Dibm.stream.nio=true"定义,具体如下:

# Set juli LogManager if it is present
if [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; then
  JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
  JAVA_OPTS="$JAVA_OPTS -Dibm.stream.nio=true"
  LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
else
  # Bugzilla 45585
  LOGGING_CONFIG="-Dnop"
fi

 

      还有另外一种情况会导致这一异常,就是文件编码的问题,多发生在你解析xml文件的时候。问题出现的原因是该xml文件保存的时候包含了BOM头信息(十有八九是因为你使用UE编辑过该文件)。

 

      在这种情况下解铃人还须系铃人,只需要用UE打开这个文件,然后另存为,在格式那里选择UTF-8 - 无BOM,这样就可以了,如果你需要改变的文件很多,可以用程序读取目录下的所有文件,然后把BOM头信息替换成空格就行,或者上网搜索一下批量删除BOM信息的工具。

 

0
0
分享到:
评论

相关推荐

    异常sun.io.MalformedInputException处理

    标题中的“异常sun.io.MalformedInputException处理”是指在Java编程中遇到的一种特定错误,通常与字符编码问题有关。当程序尝试解码一个字节流时,如果字节流不符合预期的字符集格式,就会抛出这个异常。这可能发生...

    sun.io.CharToByteConverter支持类

    网上找来了相关java文件,改文件包主要用于解决类似找不到sun.io.CharToByteConverter类及相关方法情况,放到对应引用文件目录下编译即可。 PS:java文件编码格式为UTF-8,如果有其它编码格式,自己调整一下就行,我...

    sun.io class ByteToCharConverter

    ByteToCharConverter,SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.,ByteToCharConverter

    sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用已解决

    最近项目实验发现导入工具程序后项目有错,查看发现sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用,找不到相应的类。 二、原因分析 冲浪后发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中...

    com.sun.pdfview.PDFRenderer

    import com.sun.pdfview.FullScreenWindow;import com.sun.pdfview.OutlineNode;import com.sun.pdfview.PDFDestination;import com.sun.pdfview.PDFFile;import com.sun.pdfview.PDFObject;import ...

    sun.misc.BASE64Decoder(Android Base64Jar包以及Java源代码)

    sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及...

    sun.misc.BASE64Encoder源码及jar包

    在Java编程语言中,`sun.misc.BASE64Encoder`和`BASE64Decoder`是用于进行Base64编码和解码的内部类,它们属于`sun.misc`包,这是一个非公开(非标准)的Java库。`sun.misc`包中的类主要用于JVM内部使用,因此在官方...

    sun.jdbc.odbc.JdbcOdbcDriver.zip

    标题中的"sun.jdbc.odbc.JdbcOdbcDriver.zip"是一个包含Java数据库连接(JDBC)驱动的压缩包,主要用于在Java应用程序中通过ODBC(Open Database Connectivity)接口访问各种数据库。这个驱动,也称为JDBC-ODBC桥,...

    sun.misc.BASE64Encoder.jar包

    3. **缺少文档**:官方文档通常不涵盖`sun.misc`包的内容,因此解决问题时可能会遇到困难。 4. **不适用于模块化系统**:在Java 9引入的模块系统(Jigsaw)中,直接访问`sun.misc`包可能会导致模块化错误。 总之,...

    sun0225SUN.github.io

    【标题】"sun0225SUN.github.io" 是一个个人网站的源代码仓库,通常在GitHub上可以看到这样的命名方式。这表明该文件可能是某个用户在GitHub上托管的个人博客或项目页面的源代码。从描述中并没有得到更多的信息,但...

    com.sun.rowset.jar.zip

    《com.sun.rowset.jar.zip——探索Sun公司的RowSet技术在数据库操作中的魅力》 在Java世界里,数据访问是核心任务之一,而Sun公司的RowSet技术则是Java数据库连接(JDBC)的重要组成部分,它为开发者提供了高效、...

    import com.sun.image.codec.jpeg.JPEGImageEncoder;包的下载

    import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt....

    com.sun.media.jai等文件转换jar

    Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)有三个方法: Java Image I/O API,支持常见图片,从Java 2 version 1.4.0开始就内置了。 主页:...

    sun.misc.base64decoder.jar下载

    sun.misc.BASE64Encoder找不到jar包的解决方法? 在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:  Access restriction: The type BASE64Decoder is not ...

    sun.jdbc.odbc.JdbcOdbcDriver.jar.7z

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不...

    com.sun.crypto.provider.SunJCE

    解决方法是寻找兼容的JDK版本,比如这里的JDK1.6_13,或者寻找替代的加密提供者,或者将`sunjce_provider.jar`这个特定的加密服务提供商的jar包导入到项目中。 【标签】"SunJCE()" 指向的是`SunJCE`类的构造函数,...

    sun.jdbc.odbc.jdbcodbcdriver-Maven.zip

    在Java的早期版本中,这个类位于`sun.jdbc.odbc`包下,可以直接通过Class.forName()方法加载并注册到JDBC驱动管理器,例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 然后,通过创建适当的URL...

    sun.jdbc.odbc.JdbcOdbcDriver.jar

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不...

    sun.misc.BASE64Encoder 加密源码+完整包.rar

    在Java编程语言中,`sun.misc.BASE64Encoder` 和 `sun.misc.BASE64Decoder` 是两个用于Base64编码和解码的内部类,它们位于`sun.misc`包下。Base64是一种用于在网络上传输二进制数据的文本编码方式,它将任意的字节...

Global site tag (gtag.js) - Google Analytics