javaunixcxfwsdl2java

CXF WSDL2Java -p has invalid character exception


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!


Solution

  • 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