[ https://issues.apache.org/jira/browse/CXF-1798?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benson Margulies resolved CXF-1798. ----------------------------------- Resolution: Fixed Fix Version/s: 2.1.4 If it works, it works. > DynamicClientFactory does not work when called through Ant > ---------------------------------------------------------- > > Key: CXF-1798 > URL: https://issues.apache.org/jira/browse/CXF-1798 > Project: CXF > Issue Type: Bug > Affects Versions: 2.0.5 > Environment: I am using Groovy 1.5.6 with GroovyWS 0.3.1 on Windows > XP. I am calling Groovy via Ant 1.7.0. > Reporter: Peter Connolly > Priority: Minor > Fix For: 2.1.4 > > Attachments: build.xml, GroovyWSTest.java, output.log > > > I've created GroovyWS code to talk to a web service. GroovyWS uses ApacheCXF > 2.0.5 to dynamically create classes for the web services objects. When this > code is run via a batch script, it runs correctly. When this code is run via > Ant, I get this error: > [java] javac: invalid flag: > C:/DOCUME~1/PCONNO~1/LOCALS~1/Temp/org.apache. > [EMAIL PROTECTED] > I think there are a couple of defects in the class DynamicClientFactory. > First, in the compileJavaSrc method, the call to javac is constructed without > checking if the classpath is populated. The code could be modified to > conditionally append the classpath similar to this: > static boolean compileJavaSrc(Path classPath, Path srcPath, String dest) { > String[] srcList = srcPath.list(); > List<String> javacCommand = new ArrayList<String>(); > javacCommand.add("javac"); > if(classPath != null && classPath.size() > 0){ > javacCommand.add("-classpath"); > javacCommand.add(classPath.toString()); > } > javacCommand.add("-d"); > javacCommand.add(dest.toString()); > javacCommand.add("-target"); > javacCommand.add("1.5"); > for (int i = 0; i < srcList.length; i++) { > javacCommand.add(srcList[i]); > } > org.apache.cxf.tools.util.Compiler javaCompiler > = new org.apache.cxf.tools.util.Compiler(); > return javaCompiler.internalCompile(javacCommand.toArray(new > String[javacCommand.size()]), javacCommand.size()); > } > The next issue with DynamicClientFactory is the setupClasspath method. This > method explicitly tests if the ClassLoader inherits from URLClassLoader and > then appends the URLs from that URLClassloader to its own classpath. The > AntClassLoader, unfortunately, does not extend from the URLClassLoader. When > the classpath is constructed it is empty. If the compileJavaSrc method is > fixed as above many calls will still fail because there is a dependency on > classes that are not present during compilation (i.e. GroovyWS classes). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.