在url
和http:xxx.com
中设置了..test/java/resources/application-local.properties
和..main/java/resources/application-local.properties
使用applicationcontext-ws.xml
的名为${url}
的文件:
<jaxws:client id="xxx"
serviceClass="RemoteService"
address="${url}">
<jaxws:outInterceptors>
<ref bean="headerInterceptor"/>
</jaxws:outInterceptors>
</jaxws:client>
运行测试时,出现异常:
原因:java.net.URISyntaxException:路径中的非法字符 索引1:位于java.net.URI $ Parser.fail(URI.java:2848)处的$ {url} java.net.URI $ Parser.checkChars(URI.java:3021)在 java.net.URI $ Parser.parseHierarchical(URI.java:3105)在 java.net.URI $ Parser.parse(URI.java:3063)在 java.net.URI。(URI.java:588)在 org.apache.cxf.transport.http.HTTPConduit.setupURI(HTTPConduit.java:664) 在 org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:458)
但是,在正常运行(即未运行测试)时,永远不会发生此问题。
起初,我怀疑是因为未加载..test/resources/application-local.properties
。我在测试类中用url
注释了@Value(${url})
字段,在调试模式下,我可以看到该字段的值正是..test/resources/application-local.properties
中url的内容,所以这不是原因。>
请提供一些建议以帮助我找出原因,以及在进行测试时如何解决url
吗?谢谢。
答案 0 :(得分:0)
我相信'$ {url}'本身将作为url,而'{'被视为非法字符。请调试并检查在运行时传递/创建的URL是什么。我相信$ {url}在运行时无法正确替换。