2017-06-06 76 views
0

我們正在構建一個包含Java8的Web服務並將其部署到Tomcat8。我們在啓動過程中遇到以下錯誤。 org.springframework.beans.factory.BeanDefinitionStoreException:IOException從類路徑資源解析XML文檔[META-INF/cxf/cxf-servlet.xml];嵌套異常是java.io.FileNotFoundException:無法打開類路徑資源[META-INF/cxf/cxf-servlet.xml]因爲它不存在使用Java 8構建Web服務時啓動失敗

當我們用Java7構建相同的組件時,我們沒有看到這個問題。

這裏是我們的POM依賴

<dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>2.7.0</version> 
    </dependency> 

這裏是我們的web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationConfig.xml</param-value> 
</context-param> 

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<servlet> 
    <servlet-name>CXFServlet</servlet-name> 
    <display-name>CXF Servlet</display-name> 
    <servlet-class> 
     org.apache.cxf.transport.servlet.CXFServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>CXFServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

ApplicationConfig.xml有進口

<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

請幫忙。嘗試使用3.0.4和3.1.8 cxf版本,但那在構建應用程序失敗。

+0

您是否驗證了'META-INF/CXF/CXF-servlet.xml'存在並且可訪問? – bradimus

回答

0

加入這個依賴於你的項目

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-transports-http</artifactId> 
    <version>2.7.0</version> 
</dependency> 
+0

如果您打算回答投票答案,請給出解釋。 'cxf-servlet.xml'文件是'cxf-rt-transports-http' jar的METE-INF,所以這個答案應該解決這個問題。 –

+2

如果你打算回答,請給出解釋。這個評論應該在你的回答中提供證據。 –

+0

謝謝大衛..這確實解決了我的問題。 – user1344411