Как вызвать WSDL2JAVA из муравья с пробелами на моем пути - PullRequest
0 голосов
/ 12 октября 2009

Привет, ребята!

Я пытаюсь вызвать Axis2 WSDL2JAVA в моем файле ant для создания клиента 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

Я пытался добавить & quot; к своей собственности, но это не работает и дает мне двойной путь. Я также пытался изменить вложенное значение arg = на arg line = , но это то же самое.

Действительно ли это, но мешает мне строить из каталога с пробелами? Я не могу поверить, что это все еще происходит в эти дни ...: - (

Обновление Я не могу переместить проект, чтобы избавиться от пробелов.

Ответы [ 4 ]

2 голосов
/ 12 октября 2009

В URI пробелы должны быть экранированы как% 20

1 голос
/ 27 октября 2014

Последняя версия Axis2 (1.6.2) по-прежнему имеет эту проблему: Создание URI с заменой пробелов на% 20 лучше всего выполнять с помощью функции 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>
1 голос
/ 12 октября 2009

Поскольку вы работаете в Windows, у вас есть возможность использовать короткие имена для ваших каталогов. Вы используете команду dir /x в своих каталогах, чтобы найти короткие имена. Например, dir /x c:\ выведет список файлов и каталогов на вашем C: \, включая корень «пути с пробелами», без пробелов.

Общее имя, которое вы найдете полезным, - это "Program Files", которое обычно имеет значение "PROGRA ~ 1".

В вашем примере путь может оказаться следующим:

C:\pat~1\project\subdir\my.wsdl

Однако, как было упомянуто выше, было бы лучше проверить путь, используя команду dir (обе с /x, чтобы получить короткое имя, а затем снова, чтобы проверить использование короткого имени.

0 голосов
/ 12 октября 2009

Простое решение - избавиться от этих надоедливых пробелов. Поверьте мне, вы будете рады, что сделали.

...