【问题标题】:Cannot resolve ${url} in applicationcontext-ws.xml while running test运行测试时无法解析 applicationcontext-ws.xml 中的 ${url}
【发布时间】:2019-02-20 22:37:44
【问题描述】:

url 在..test/java/resources/application-local.properties 和..main/java/resources/application-local.properties 中设置了类似http:xxx.com 的内容

一个名为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: ${url} at java.net.URI$Parser.fail(URI.java:2848) at 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 没有加载。我在测试类中用@Value(${url}) 注释了一个字段url,在调试模式下我可以看到该字段的值正是..test/resources/application-local.properties 中的url 内容,所以这不是原因。

您能否提供一些建议来帮助我找出原因以及如何在运行测试时解决url?谢谢。

【问题讨论】:

  • 您应该提供有关您的测试设置和测试本身的更多详细信息。

标签: java spring spring-boot


【解决方案1】:

我相信 '${url}' 本身就是 url,而 '{' 被视为非法字符。请调试并检查在运行时传递/创建的 url 是什么。我相信 ${url} 在运行时没有被正确替换。

【讨论】:

    猜你喜欢
    • 2016-04-13
    • 2021-10-06
    • 1970-01-01
    • 2018-03-12
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    相关资源
    最近更新 更多