我尝试在我的ant文件中调用Axis2 WSDL2JAVA来创建WSDL客户端。但它已经破碎,因为我的路径中有空白(我在Windows上......)。这是我的蚂蚁
<property name="wsdl.file" location="C:\path with whitespaces\project\subdir\my.wsdl"/>
...
<target name="generate.client" depends="Clean.Client">
<java classname="org.apache.axis2.wsdl.WSDL2Java">
<arg value="-uri" />
<arg file="${wsdl.file}"/>
<arg value="-u"/>
<arg value="-p"/>
<arg value="my.package.declaration"/>
<arg value="-S"/>
<arg value="src/test"/>
...
<classpath refid="axis2.classpath"/>
</java>
</target>
当我尝试运行它时,我收到了这个错误:
[java] Caused by: java.net.URISyntaxException: Illegal character in path at index 18: file:/C:/path with whitespaces/project/subdir/my.wsdl
[java] at java.net.URI$Parser.fail(URI.java:2809)
[java] at java.net.URI$Parser.checkChars(URI.java:2982)
[java] at java.net.URI$Parser.parseHierarchical(URI.java:3066)
[java] at java.net.URI$Parser.parse(URI.java:3014)
[java] at java.net.URI.<init>(URI.java:578)
[java] at org.apache.ws.commons.schema.resolver.DefaultURIResolver.resolveEntity(DefaultURIResolver.java:57)
[java] ... 39 more
我尝试添加&amp; “到我的财产,但它不起作用,然后给我一个加倍的路径。我还尝试将嵌套的 arg value = 更改为 arg line = ,但它是一样的。
这真的是一个但是阻止我从具有空格的目录构建?我不敢相信这些日子仍在发生......: - (
更新我无法移动项目以摆脱空白。
答案 0 :(得分:2)
在URI中,必须将空格转义为%20
答案 1 :(得分:1)
由于您使用的是Windows,因此您可以选择使用目录的短名称。您在目录上使用dir /x
命令来查找短名称。例如,dir /x c:\
将列出C:\上的文件和目录,包括“带有空格的路径”的根,没有空格。
您会发现有用的常用短名称是“程序文件”,通常解析为“PROGRA~1”。
在您的示例中,路径可能会变为:
C:\pat~1\project\subdir\my.wsdl
但是,如上所述,最好使用dir命令测试路径(使用/x
来获取短名称,然后再次测试使用短名称
答案 2 :(得分:1)
最新的Axis2版本(1.6.2)仍有此问题: 创建一个空格替换为%20的URI最好使用makeurl函数完成:
<makeurl file="${wsdl.src}" property="wsdl2java.uri"/>
<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">
<arg line="-uri ${wsdl2java.uri}"/>
<arg line="-S ${src.dir}/"/>
[...]
<classpath>
<path refid="axis2-classpath"/>
</classpath>
</java>
答案 3 :(得分:0)
简单的解决方案是摆脱那些讨厌的空白。相信我,你会很高兴你做到了。