### Problem description
When using the `cxf-java2ws-plugin` from a Maven project using JDK 9+ (10 and 
11 release candidate) on Windows 10, it fails to run because the generated 
command line is too long.

As an example, in one project I'm working on, the generated classpath was more 
than 75000 characters long – Yes, it is a big project. It works on JDK 8.

`[ERROR] Failed to execute goal org.apache.cxf:cxf-java2ws-plugin:3.2.6:java2ws 
(EXECUTIONNAME) on project PROJECTNAME: Error while executing process.: Cannot 
run program "cmd.exe" (in directory "C:\opt\dev\..._PROJECTNAME_\target"): 
CreateProcess error=206, The filename or extension is too long -> [Help 1]`

The current code base (3.3.0-SNAPSHOT) does not work at all with JDK 10 or 11.

The problem is that the classpath is part of the command line and on Windows it 
seems to be limited to around 8000 characters.

### This commit includes:

Fix for "CreateProcess error=206, The filename or extension is too long":
 - Added parameter `classpathAsEnvVar`, which is `false` by default,
   unless plugin is running in a Windows OS using JDK 9+, in which
   case it is activated automatically. This parameter controls if
   the CLASSPATH is applied via environment variable or as an
   argument to the command line that executes the java2ws tool.

Cleaning up the JDK9+ JVM arguments code:
 - Single block for JDK 9, 10, 11 and up.
 - For JDK 11 and up the java.xml.ws module is skipped since
   it was moved out of the JDK.

More verbose error reporting:
 - If command fails to execute, the reported message
   includes information about the command line, and
   the CLASSPATH environment variable if defined.

Other fixes:
 - Fixed NPE when classifier is undefined.

[ Full content available at: https://github.com/apache/cxf/pull/440 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to