IDEA根据wsdl生成java代码(Generate Java Code from WSDL)以及乱码问题的解决
目录
1、创建待存放java代码的目录,点击“帮助”=>“查找操作”,打开查找窗口;
2、输入wsdl并查找,点击“从WSDL生成Java代码”,打开新的窗口;
3、选择wsdl文件,并选择输出路径,点击确定即可生成java代码。
1、将乱码的文件夹设置为GBK,保证文件夹下的文件再打开不会显示乱码:
2、选择某个GBK文件,点击IDEA右下角GBK,改为UTF-8,在弹出框里选择“转换”;
3、将文件夹下所有文件改为UTF-8之后,再在“设置”里将文件夹的文件编码由GBK改为UTF-8,即达到将该目录下全部GBK文件转为UTF-8文件,,并且用IDEA打开也不再乱码。
4、可借助EmEditor文本编辑器批量将GBK转为UTF-8,使用EmEditor打开全部待转编码的文件,然后点击“文件”=>“以指定编码全部保存”。
一、根据wsdl生成java代码
看了很多博文都是在Tool里有个WebServices,我的IDEA是2021版,工具菜单下没有WebServices。好像是较新的版本都没有。
不用太纠结这个问题,参考以下步骤可实现相同功能:
1、创建待存放java代码的目录,点击“帮助”=>“查找操作”,打开查找窗口;
2、输入wsdl并查找,点击“从WSDL生成Java代码”,打开新的窗口;
3、选择wsdl文件,并选择输出路径,点击确定即可生成java代码。
二、解决乱码问题
乱码原因:
乱码是因为文件编码不一致,Win10默认字符编码为936(GBK),导致IDEA根据wsdl生成的java文件编码为GBK,而如果IDEA设置了全局/项目编码为UTF-8,这时打开文件就会乱码。
解决方法:
可修改IDEA配置,单独将乱码文件配置为GBK也能解决乱码问题,但是文件太多时很不方便。可借助EmEditor文本编辑器统一将所有选中的GBK文件转为UTF-8。
具体解决步骤如下:
1、将乱码的文件夹设置为GBK,保证文件夹下的文件再打开不会显示乱码:
2、选择某个GBK文件,点击IDEA右下角GBK,改为UTF-8,在弹出框里选择“转换”;
3、将文件夹下所有文件改为UTF-8之后,再在“设置”里将文件夹的文件编码由GBK改为UTF-8,即达到将该目录下全部GBK文件转为UTF-8文件,,并且用IDEA打开也不再乱码。
4、可借助EmEditor文本编辑器批量将GBK转为UTF-8,使用EmEditor打开全部待转编码的文件,然后点击“文件”=>“以指定编码全部保存”。
5、终极解决办法:
修改Windwos系统默认字符编码,由GBK改为UTF-8。
参考地址:
理想很丰满,现实很骨感,改了系统默认编码后根据wsdl生成的java代码还是有乱码。
继续往下看...
继续研究,IDEA默认使用的生成工具,就是JDK文件夹bin目录下“wsimport.exe”工具。
这个wsimport.exe工具生成代码时,不是取的系统当前字符编码,而是统一默认为GBK(估计和当前系统语言还是有一定关系的,至少知道是简体中文)。
所以要想自动生成的文件编码为UTF-8,需要在执行命令时,加上字符集。
打开命令提示符窗口,cd进入wsimport.exe所在路径,执行如下命令:
wsimport -encoding utf-8 -keep -s D:\temp -p com.lawyer.user -verbose http://服务地址?wsdl
参数说明:
-encoding : 指定编码格式
-keep:是否生成java源文件
-d:指定.class文件的输出目录
-s:指定.java文件的输出目录, 此目录必须存在
-p:定义生成类的包名,不定义的话有默认包名
-verbose:在控制台显示输出信息
-b:指定jaxws/jaxb绑定文件或额外的schemas
-extension:使用扩展来支持SOAP1.2
6、wsimport.exe常用命令组合:
wsimport -encoding utf-8 -s D:\demo -p com.packagename -verbose D:/wsdl/test.wsdl
以UTF-8编码生成,且只生成.java文件,不生产.class文件,生成类的包名为“com.packagename”,在控制台显示输出信息,wsdl文件为“test.wsdl”。
注意、注意、注意:报以上错误是因为没有以管理员身份运行cmd。
还要注意wsdl文件所在路径中不要有中文。
来源地址:https://blog.csdn.net/yinshengchen/article/details/129026683
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341