CXF出现编码 GBK 的不可映射字符问题解决
来源:互联网 发布:剑侠情缘手游mac版 编辑:程序博客网 时间:2024/06/05 10:09
CXF创建客户端 出现编码 GBK 的不可映射字符问题解决
1问题描述:
在用cxf创建client客户端的时候,在main方法启动,创建客户端是正常的,但是在tomcat中启动的时候,用action去访问,执行以下第三行代码会出现 警告:编码 GBK 的不可映射字符的 问题:
1. String wsdlurl = "http://" + "192.168.0.199:8081" + "/services/hello?wsdl";2.JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();3. Client client = clientFactory.createClient(wsdlurl);
2.控制台出现问题
D:\work\apache-tomcat-7.0.69\temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@506d2be2-1509421150671-src\com\elgin\cxf\service\User.java:56: 错误: 编码GBK的不可映射字符
* 鑾峰彇name灞炴?鐨勫?銆?
^
D:\work\apache-tomcat-7.0.69\temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@506d2be2-1509421150671-src\com\elgin\cxf\service\User.java:68: 错误: 编码GBK的不可映射字符
* 璁剧疆name灞炴?鐨勫?銆?
^
D:\work\apache-tomcat-7.0.69\temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@506d2be2-1509421150671-src\com\elgin\cxf\service\User.java:68: 错误: 编码GBK的不可映射字符
* 璁剧疆name灞炴?鐨勫?銆?
^
D:\work\apache-tomcat-7.0.69\temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@506d2be2-1509421150671-src\com\elgin\cxf\service\User.java:68: 错误: 编码GBK的不可映射字符
* 璁剧疆name灞炴?鐨勫?銆?
3.解决方案
在百度搜索解决方案,找来找去都没有解决方案,有个更改eclipse编码的问题的方法还是不能成功,还是自己动手跟踪源码发现,JaxWsDynamicClientFactory在编译的时候,是加载的jdk的默认的编码方式,是这里出现的问题,只要在源码中指定编码utf-8即可解决此问题。源码解决代码:
protected boolean compileJavaSrc(String classPath, List<File> srcList, String dest) { org.apache.cxf.common.util.Compiler javaCompiler = new org.apache.cxf.common.util.Compiler(); javaCompiler.setClassPath(classPath); javaCompiler.setOutputDir(dest); javaCompiler.setEncoding("UTF-8");//增加的代码 // System.out.println("your bianma is run 1.7---"); if (System.getProperty("java.version").startsWith("9")) { javaCompiler.setTarget("9"); } else { javaCompiler.setTarget("1.7"); } return javaCompiler.compileFiles(srcList); }
这个方法在cxf-rt-frontend-simple-3.1.13.jar这个jar包中 org.apache.cxf.endpoint.dynamic.DynamicClientFactory.class中,需要用反编译工具jd-gui进行反编译或者直接下载jar的源码(cxf-rt-frontend-simple-3.1.13.jar的源码资源链接http://download.csdn.net/my),修改过后,再把这个修改的java编译成class文件,然后在cxf-rt-frontend-simple-3.1.13.jar这个jar包中,把org.apache.cxf.endpoint.dynamic.DynamicClientFactory.class覆盖就行。(为方便直接把修改过后的jar包直接分享:http://download.csdn.net/download/liupantao/10106989)
4.说明
由于这个问题网上资源比较少,特共享出解决方案,请尊重个人成果
转载请标明来源:http://blog.csdn.net/liupantao/article/details/78465313
5.资源下载
http://download.csdn.net/download/liupantao/10106989
- CXF出现编码 GBK 的不可映射字符问题解决
- 关于使用CXF出现编码 GBK 的不可映射字符问题解决
- ANT出现“警告: 编码 GBK 的不可映射字符”解决方法
- javadoc生成出现错误:编码 GBK 的不可映射字符;
- maven打包时出现编码GBK的不可映射字符
- maven编译出现编码 gbk 的不可映射字符错误
- javadoc生成出现错误“编码 GBK 的不可映射字符”
- ANT出现“警告: 编码 GBK 的不可映射字符”解决方法
- javadoc生成出现错误【编码 GBK 的不可映射字符】
- javadoc 出现:错误: 编码GBK的不可映射字符
- javadoc生成出现错误“编码 GBK 的不可映射字符
- javadoc生成出现错误“编码 GBK 的不可映射字符
- javadoc生成出现错误“编码 GBK 的不可映射字符”
- ANT出现“警告: 编码 GBK 的不可映射字符”解决方法
- mvn package出现“编码GBK的不可映射字符”
- JAVA中出现错误:编码GBK的不可映射字符
- javac编译出现”编码 GBK 的不可映射字符“错误
- maven打包时出现编码GBK的不可映射字符
- Lnmp环境搭建和部署xapi文档
- 打五颜六色柚子
- android 图片的三级缓存(内存,sd卡,网络)
- Java SE7新特性之try-with-resources语句
- 319. Bulb Switcher
- CXF出现编码 GBK 的不可映射字符问题解决
- Linux lsblk和df命令区别
- VGGNet模型解读
- java基础
- note
- 计算1*2*3+3*4*5+...+99*100*101的值。
- 字面量
- 机器学习——马尔可夫模型及马尔可夫决策过程(MDP)
- mysql查询表的信息