2009-10-12 3 views
0

안녕 얘들 아!내 경로의 공백으로 개미에서 WSDL2JAVA를 호출하는 방법

내 개미 파일에서 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> 

입니다 : & quot을 추가

[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 

나는 노력을; 내 재산에하지만, 작동하지 않으며 나에게 두 배로 된 경로를 제공합니다. 또한 중첩 된 arg 값을에서 arg 행 =으로 변경하려고 시도했지만 동일합니다.

정말이게 뭡니까?하지만 공백이있는 디렉토리에서 건물을 만들지 못하게합니까? 나는 여전히 이러한 일이 일어나고 믿을 수 없어 ... :-(내가 프로젝트를 이동할 수 없습니다

업데이트가 공백을 제거 할 수 있습니다.

+0

색인 18은 공백이있는 경로의 잘못된 문자 * 위치 *를 의미합니까? 나는 그것이 이전의 것을 볼 수 없다. 어떻게 재미있는 캐릭터를 피할 수 있니? 백 스페이스는 MS pathname에서 일반적인 의미를가집니다. – pavium

+0

아, 죄송합니다. 나는 실제 경로를 변경하고 색인을 잊어 버렸다. 그것은 불법 문자의 위치에 해당합니다. – cringe

답변

2

를 URI에에서 공백이 Windows에서 있기 때문에, 당신은 당신의 디렉토리에 대한 shortnames를 사용하는 옵션이 있습니다 (20)

+0

표준 개미로 할 수 있습니까? 또는 ContribTask UrlEncode를 사용해야합니까? – cringe

+0

아, 그리고 btw. WSDL2JAVA는 URL이나 경로를 원하므로 URLencode 할 필요가 없습니다. [java] 사용법 : WSDL2Java [옵션] -uri : WSDL의 URL 또는 경로 – cringe

+1

코드가 파일을 전달 중입니다. 경로로.속성을 다른 곳에서 사용하지 않는 경우 구문 적으로 올바른 URI로 설정할 수 있습니다. 그러나 속성을 파일 경로로 사용하려면 ContribTask UrlEncode를 사용해야합니다. –

0

간단한 해결책은 그 제거하는 것입니다 성가신 공백은. 당신은 당신이 한 드리겠습니다, 날 믿어.

+0

프로젝트 이동 옵션이 ​​없습니다. -/ – cringe

1

퍼센트로 이스케이프해야합니다. 디렉터리에 dir /x 명령을 사용하여 짧은 이름을 찾습니다 (예 :).은 공백없이 "공백이있는 경로"의 루트를 포함하여 C : \의 파일 및 디렉토리를 나열합니다.

"PROGRA ~ 1"로 일반적으로 해석되는 "Program Files"에 대한 유용한 약어가 있습니다. 위에서 언급 한 바와 같이 모두 /x으로 얻을 수 (dir 명령을 사용하여 경로를 테스트하기 위해, 그것은 가장 좋은 것입니다, 그러나

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

: 당신의 예에서

는 경로로 판명 수 . 가장 makeurl 기능을 사용하여 수행됩니다 20 %로 대체 공백이있는 URI를 만들기 : 단축 이름은 다음 다시 후 짧은 이름의 사용을 테스트

+0

하드 코딩 된 디렉토리 이름을 사용하지 않고 "$."로 설정된 프로젝트를 사용하고 있습니다. – cringe

+0

짧은 이름을 하드 코드 된 값으로 사용했지만 실제로 제거해야합니다. 그래서 내 개미에서 ContribTask UrlEncode를 얻을 것이라고 생각합니다. 감사 – cringe

1

최신 Axis2를 버전 (1.6.2)을 여전히이 문제가 :

<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> 
관련 문제