I'm stuck with generating java classes of a wsdl wit CXF wsdlToJava and because we have a newer version of a WSDL i want to use CXF like the previous developer.
Im getting an error after executing the following command in my terminal: sudo ~/opt/apache-cxf-3.1.12/bin/wsdl2java -verbose -d ./src-gen -p http://www.text.nl/text/UPPERCASETEXT/003 -b ./src/META-INF/bindings-text.xml -validate ./scr/META-INF/Text_UPPERCASETEXT003.wsdl
After executing i get the following error:
org.apache.cxf.tools.common.ToolException: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: -p has invalid character!
at org.apache.cxf.tools.common.toolspec.AbstractToolContainer.execute(AbstractToolContainer.java:180)
at org.apache.cxf.tools.common.AbstractCXFToolContainer.execute(AbstractCXFToolContainer.java:69)
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:413)
at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
at org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:185)
Caused by: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: -p has invalid character!
What character are they are talking about...?
Thanks in advance!
The problem here is exactly as stated, in -p part, i.e. in -p http://www.text.nl/text/UPPERCASETEXT/003
.
Documentation about wsdl2java tool in CXF is given on web page:
https://cxf.apache.org/docs/wsdl-to-java.html
The syntax of -p option is:
-p [ wsdl-namespace= ] PackageName
Description for it states:
Specifies zero, or more, package names to use for the generated code. Optionally specifies the WSDL namespace to package name mapping.
In practice, it means that you should either specify one Java package to be used for all generated code, e.g.
-p nl.text.text.uppercase
,
or you should specify a mapping of one namespace (http://www.text.nl/text/UPPERCASETEXT/003) to a corresponding Java package (nl.text.text.uppercase), like
-p http://www.text.nl/text/UPPERCASETEXT/003=nl.text.text.uppercase
Of course, if you need to map multiple namespaces to multiple packages, it can be specified with multiple -p options, like:
-p http://www.text.nl/text/UPPERCASETEXT/003=nl.text.text.uppercase -p http://www.text.nl/text/LOWERCASETEXT/003=nl.text.text.lowercase