注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

jdk由6升级到8遇到的问题  

2015-08-22 11:47:48|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      由于系统环境的变更,需要将一个项目迁移。项目原操作系统jdk版本是6,新环境jdk版本是8。迁移后日志出现错误:
java.beans.IntrospectionException: type mismatch between read and write methods
意思是读和写的方法类型不匹配。在jdk8中限制了set和get方法对应的参数及返回值的类型要完全一致,如果set时参数是String,而对应的get方法返回值的Object会报错。于是写脚本扫描源码,具体代码不贴出来了,其中判断set和get方法的正则如下:
/get[a-z]+\s*\(\s*\)\s*\{/
/set[a-z]+\(\s*[a-z]+\s*[a-z]+\s*\)\s*\{/
找到了项目中有set方法参数为Date,相应的get方法返回值为String。修改完后错误还在。
      项目中使用了freemarker 2.3.19,freemarker 官方文档中有讲2.3.19版本会引发type mismatch错误,另有资料说spring旧版本中的某些写法在jdk8中也会有这样的错误。于是freemarker由2.3.19升级到2.3.23,spring由3.1.1升级到3.2.1。type mismatch错误没有了,出现了新的错误:
com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'C' (code 67) in prolog; expected '<'
错误指向了一个目录,该目录中是jdk生成的webservice客户端代码。以上错误是解析xml文件出错,但是此目录没有xml文件,有可能是java源码中的注释存在xml格式内容。鉴于旧webservice客户端代码是由jdk6生成的,运行环境是jdk8,于是使用jdk8重新生成webservice客户端代码。重新部署后错误解决。

      以上错误在weblogic中部署出错,以下有一些处理方式未尝试但记录一下
webLogicStart.sh
-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory
-Djavax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory
-Djavax.xml.stream.XMLEventFactory=com.ctc.wstx.stax.WstxEventFactory
weblogic-application.xml
<wls:package-name>com.ctc.wstx.*</wls:package-name>
<wls:package-name>javax.xml.*</wls:package-name>
<wls:package-name>org.apache.*</wls:package-name>
  评论这张
 
阅读(822)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017