Ranjit Vadakkan created CXF-8049:
------------------------------------
Summary: org.apache.cxf.common.util.Compiler fails to compile if a
classpath entry contains spaces
Key: CXF-8049
URL: https://issues.apache.org/jira/browse/CXF-8049
Project: CXF
Issue Type: Bug
Components: Core
Affects Versions: 3.3.2
Environment: IntelliJ IDEA 2019.1.2 (Ultimate Edition)
Build #IU-191.7141.44, built on May 7, 2019
JRE: 1.8.0_202-release-1483-b49 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.3
Using OpenJDK 12 to run/debug my project
Reporter: Ranjit Vadakkan
I'm trying to create a dynamic client using
[https://github.com/apache/cxf/blob/master/distribution/src/main/release/samples/wsdl_first_dynamic_client/src/main/java/demo/hw/client/ComplexClient.java]
as a template.
When I try to debug this, I intermittently get a (javac compile) failure where
org.apache.cxf.common.util.Compiler.internalCompile fails because the classpath
contains an entry with spaces. In my case, this entry with a space was a jar
from the IntelliJ installation path.
After spending some time debugging it, I could work around the problem by
escaping the said entry from the calling code (ComplexClient.java), but maybe
this should be done inside org.apache.cxf.common.util.Compiler.addArgs where
the classpath is being retrieved from the system property 'java.class.path'. My
workaround was -
{{String javaClasspath = System.getProperty("java.class.path");}}
{{if(javaClasspath != null){}}
{{ List<String> correctedEntries = new ArrayList<>();}}
{{ String[] toks = javaClasspath.split(File.pathSeparator);}}
{{ for(String tok: toks) {}}
{{ if(tok.matches(".*\\s+.*"))}}
{{ correctedEntries.add("\"" + tok + "\"");}}
{{ else}}
{{ correctedEntries.add(tok);}}
{{ }}}
{{ System.setProperty("java.class.path", String.join(File.pathSeparator,
correctedEntries));}}
{{}}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)