IDEA根据wsdl生成java代码(Generate Java Code from WSDL)以及乱码问题的解决

目录

一、根据wsdl生成java代码

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打开全部待转编码的文件,然后点击“文件”=>“以指定编码全部保存”。

5、终极解决办法:

6、wsimport.exe常用命令组合


一、根据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。

参考地址:

win10怎么设置系统默认编码为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文件所在路径中不要有中文。