2014-06-27 65 views
3

我有解決spring的「classpath:」功能的問題。我一有我的文件中的下一個路徑:Spring不能解析classpath:在xml的文件聲明中

src/main/java/resources/FederationMetadata.xml 

另外,我有一個bean:

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> 
    <constructor-arg> 
     <list> 
      <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate"> 
       <constructor-arg> 
        <bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider"> 
         <constructor-arg> 
          <value type="java.io.File">classpath:FederationMetadata.xml</value> 
         </constructor-arg> 
         <property name="parserPool" ref="parserPool"/> 
        </bean> 
       </constructor-arg> 
       <constructor-arg> 
        <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> 
        </bean> 
       </constructor-arg> 
      </bean> 
     </list> 
    </constructor-arg> 
</bean> 

所以我的問題是,應用程序失敗,出現一個異常:

D:\myFolder\myProject\classpath:FederationMetadata.xml does not exist 

據我瞭解,Spring不能解析文件位置。我嘗試了classpath * :,但沒有幫助。在另一個項目中,我有相同的設置(「classpath:」),它工作正常。它可能是什麼?

+0

你開始從你的IDE應用程序:

所以,現在,如果你有你的元數據的XML類路徑裏面,做這樣的事情

Eclipse,或者先用Maven編譯然後部署?你能發佈你的WAR檔案的完整內容嗎? –

回答

1

這個問題已經快把我逼瘋以及 的路徑是相類的文件夾,即。

在某些時候,我意識到FilesystemMetadataProvider被替換爲ResourceBackedMetadataProvider。 - 例如

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> 
    <constructor-arg> 
     <list> 
      <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider"> 
       <constructor-arg> 
        <bean class="java.util.Timer"/> 
       </constructor-arg> 
       <constructor-arg> 
        <bean class="org.opensaml.util.resource.ClasspathResource"> 
         <constructor-arg value="/FederationMetadata.xml"/> 
        </bean> 
       </constructor-arg> 
       <property name="parserPool" ref="parserPool"/> 
      </bean> 
     </list> 
    </constructor-arg> 
</bean> 
0

如果你想從你需要把它裏面 WEB-INF/classes文件夾的類路徑訪問嘗試的

<value type="java.io.File">file:///FederationMetadata.xml</value> 

代替

<value type="java.io.File">classpath:FederationMetadata.xml</value> 
0

。如果該文件是內部

WEB-INF/classes/configs/somefile.xml 

然後

classpath:configs/somefile.xml