Java 如何从wsimport.exe更改生成代码的注释语言

Java 如何从wsimport.exe更改生成代码的注释语言,java,wsdl,Java,Wsdl,我想使用%JAVA\u HOME%/bin/wsimport.exe将.wsdl-文件导入到我的JAVA项目中。一切正常,除了评论的语言是德语,但我希望是英语。如何更改wsimport.exe所使用的语言?我认为您弄错了。Javadoc内容只是Java源代码中信息的汇编 当您的Javadoc HTML包含最多德语内容时——因为人们已经将德语文本写入java源代码。你不能仅仅改变导入过程-你必须找到能将德语文本翻译成英语的人 不,问题的作者没有弄错。wsimport似乎从操作系统中获取了该语言。在

我想使用
%JAVA\u HOME%/bin/wsimport.exe
.wsdl
-文件导入到我的JAVA项目中。一切正常,除了评论的语言是德语,但我希望是英语。如何更改wsimport.exe所使用的语言?

我认为您弄错了。Javadoc内容只是Java源代码中信息的汇编


当您的Javadoc HTML包含最多德语内容时——因为人们已经将德语文本写入java源代码。你不能仅仅改变导入过程-你必须找到能将德语文本翻译成英语的人

不,问题的作者没有弄错。wsimport似乎从操作系统中获取了该语言。在我们的项目中,我们有德语和英语设置的机器。相应地生成了代码:

英语机器:

/**
 * <p>Java class for abstractRequest complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
对于Oracle JDK 8,可以直接调用
WsImport
类,并通过将
Locale
设置为所需的语言来配置生成注释的语言(Java 11中已删除了web服务工具)

Locale.setDefault(新语言环境(“en”);
List args=new Arraylist();
//添加其他选项
add(wsdlFile.getAbsolutePath());
com.sun.tools.internal.ws.WsImport.doMain(args.toArray(新字符串[0]);

和另一种使用Apache CXF的替代方案,希望更能证明未来:

Locale.setDefault(new Locale("en"));
// options: https://cxf.apache.org/docs/wsdl-to-java.html
List<String> args = new ArrayList<>();
args.add("-suppress-generated-date");
args.add("-d");
args.add(new File("src/main/java").getAbsolutePath());
args.add("-p");
args.add("com.company.targetpackage");
args.add(new File("sample.wsdl").getAbsolutePath());

WSDLToJava wsdlToJava = new WSDLToJava();
wsdlToJava.setArguments(args.toArray(new String[0]));
wsdlToJava.run(new ToolContext());
Locale.setDefault(新语言环境(“en”);
//选项:https://cxf.apache.org/docs/wsdl-to-java.html
List args=new ArrayList();
args.add(“-suppress generated date”);
参数添加(“-d”);
add(新文件(“src/main/java”).getAbsolutePath();
参数添加(“-p”);
args.add(“com.company.targetpackage”);
add(新文件(“sample.wsdl”).getAbsolutePath();
WSDLToJava WSDLToJava=新的WSDLToJava();
setArguments(args.toArray(新字符串[0]);
run(newtoolcontext());
使用以下maven依赖项:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>3.3.2</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.2</version>
</dependency>

org.apache.cxf
cxf-codegen插件
3.3.2
com.sun.xml.bind
jaxb impl
2.3.2

我指的是从wsimport.exe生成的类、getter和setter的注释。因此,注释也是从wsimport.exe生成的。也许你可以在你的问题中添加一些示例内容。我不明白您的问题。该命令不接受-Duser.language=en参数,并显示帮助页面everytime@nicmon:不确定您执行了什么(或您所说的“命令”是什么意思)。但是如果您尝试
wsdl2java-Duser.language=en
,那么是的,这将不起作用。据我所知,您必须编辑wsdl2java脚本(wsdl2java.bat或wsdl2java bash脚本),并将脚本中的一行更改为类似于
%JAVA\u HOME%\bin\JAVA的内容-Xmx%JAVA\u MAX\u MEM%-Duser.language=en…
感谢我通过将环境变量JAVA\u TOOL\u OPTIONS设置为
-Duser.language=en
使wsimport遵循这种方法。
Locale.setDefault(new Locale("en"));
List<String> args = new Arraylist<>();
// add other options
args.add(wsdlFile.getAbsolutePath());
com.sun.tools.internal.ws.WsImport.doMain(args.toArray(new String[0]));
Locale.setDefault(new Locale("en"));
// options: https://cxf.apache.org/docs/wsdl-to-java.html
List<String> args = new ArrayList<>();
args.add("-suppress-generated-date");
args.add("-d");
args.add(new File("src/main/java").getAbsolutePath());
args.add("-p");
args.add("com.company.targetpackage");
args.add(new File("sample.wsdl").getAbsolutePath());

WSDLToJava wsdlToJava = new WSDLToJava();
wsdlToJava.setArguments(args.toArray(new String[0]));
wsdlToJava.run(new ToolContext());
<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>3.3.2</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.2</version>
</dependency>