2017-03-16 60 views
0

我無法解決正在獲取的問題。Spring中的FileNotFoundException

完整堆棧跟蹤:

12:14:08.172 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence 
12:14:08.178 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence 
12:14:08.178 [main] DEBUG o.s.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment] 
12:14:08.183 [main] INFO o.s.c.s.ClassPathXmlApplicationContext - Refreshing org[email protected]24273305: startup date [Thu Mar 16 12:14:08 GMT 2017]; root of context hierarchy 
12:14:08.222 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemProperties] PropertySource with lowest search precedence 
12:14:08.223 [main] DEBUG o.s.core.env.StandardEnvironment - Adding [systemEnvironment] PropertySource with lowest search precedence 
12:14:08.223 [main] DEBUG o.s.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [systemProperties,systemEnvironment] 
12:14:08.233 [main] INFO o.s.b.f.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [org/postprocessor/config/dataSupport.xml] 
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [org/postprocessor/config/dataSupport.xml]; nested exception is java.io.FileNotFoundException: class path resource [org/postprocessor/config/dataSupport.xml] cannot be opened because it does not exist 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252) 
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) 
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:612) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:513) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
at org.postprocessor.dao.DaoMain.main(DaoMain.java:12) 
Caused by: java.io.FileNotFoundException: class path resource [org/postprocessor/config/dataSupport.xml] cannot be opened because it does not exist 
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
... 13 more 

Bean的配置文件dataSupport.xml是在這裏:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation=" 
http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <!-- <bean/> definitions here --> 
<context:annotation-config /> 
<context:component-scan base-package="org.postprocessor.dao" /> 
<context:component-scan base-package="org.postprocessor.model" /> 
<context:component-scan base-package="org.postprocessor.util" /> 



<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" 
     /> <property name="url" value="jdbc:derby:postprocessor;create=true;" /> 
<!-- <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" /> 
    <property name="url" value="jdbc:derby://localhost:1527/db;create=true;" /> --> 
    <property name="initialSize" value="1" /> 
    <property name="maxActive" value="1" /> 
</bean> 

<bean id="daoImpl" class="org.postprocessor.dao.DaoImpl" scope="prototype"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

<bean id="messageSource" 
    class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>resourceBundles/general</value> 
      <value>resourceBundles/codeLists/codelist_eortcqlqc30</value> 
      <value>resourceBundles/codeLists/codelist_eortcqlqlc13</value> 
      <value>resourceBundles/codeLists/codelist_eq5d3l</value> 
      <value>resourceBundles/codeLists/codelist_eq5d5l</value> 
      <value>resourceBundles/codeLists/codelist_noncompletedquestionnaires</value> 
      <value>resourceBundles/codeLists/codelist_pgis</value> 
      <value>resourceBundles/codeLists/codelist_silc</value> 
     </list> 
    </property> 
</bean> 

pom.xml剪斷:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>SBP</groupId> 
<artifactId>SBP</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<name>gt20047</name> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.3.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-asm --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-asm</artifactId> 
     <version>3.1.4.RELEASE</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/asm/asm-all --> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm-all</artifactId> 
     <version>3.3.1</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.apache.derby/derbynet --> 
    <dependency> 
     <groupId>org.apache.derby</groupId> 
     <artifactId>derbynet</artifactId> 
     <version>10.12.1.1</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.derby/derbyclient --> 
    <dependency> 
     <groupId>org.apache.derby</groupId> 
     <artifactId>derbyclient</artifactId> 
     <version>10.12.1.1</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>2.0.6</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool --> 
    <dependency> 
     <groupId>commons-pool</groupId> 
     <artifactId>commons-pool</artifactId> 
     <version>1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>com.opencsv</groupId> 
     <artifactId>opencsv</artifactId> 
     <version>3.7</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io --> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>1.3.2</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>19.0</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.0</version> 
    </dependency> 


    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-csv</artifactId> 
     <version>1.3</version> 
    </dependency> 

    <dependency> 
     <groupId>net.lingala.zip4j</groupId> 
     <artifactId>zip4j</artifactId> 
     <version>1.3.2</version> 
    </dependency> 
</dependencies> 

<build> 
<finalName>gt20047</finalName> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 

       <archive> 
       <manifest> 
        <!-- Jar file entry point --> 
        <mainClass>org.postprocessor.dao.DaoMain</mainClass> 
       </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

我無法找出其中的問題,我的jar文件不具有此config文件夾enter image description here

DaoMain.java

​​
  • 如何解決這個問題?
+0

後蹤跡作爲文本而不是image – Jens

+0

位於jar中的'dataSupport.xml'位於哪裏? – Jens

+0

構建不包括此dataSupport.xml文件,這是我有錯誤 – sailaja

回答

0

您的XML文件格式不正確。

雖然我不知道這是否是這個問題,但它可能是您的項目爲什麼沒有正確取得文件的根本原因。

您的<beans>標籤沒有結束標籤。嘗試將</beans>放在文件的末尾。

此外,您的pom.xml文件具有相同的問題。 <project>未關閉。嘗試將</project>置於文件末尾。

+0

這兩個文件都是正確的,但錯過了粘貼在這裏,爲這個愚蠢的錯誤道歉...試過這個問題是無法用這個bean文件建立jar文件,因此得到錯誤...但我可以運行應用程序使用在eclipse中的Java應用程序,但我需要jar文件將其添加到批處理文件中...運行它 – sailaja

10

貌似主要問題是在這一行:

new ClassPathXmlApplicationContext("classpath:/org/postprocessor/config/dataSupport.xml"); 

你正試圖從classpath建立上下文。因此,您必須從項目的類路徑中找到您的配置文件。

您使用Maven用於構建您的項目。Maven的定義項目結構代碼源資源

/src/main/java 
/src/main/resorces 

你可以找到更多在這裏:Introduction to the Standard Directory Layout

如果你想使你的文件從classpath中你訪問必須完全置於 - resources/文件夾:

enter image description here

現在你的main()將是這樣的:

public static void main(String[] args) { 
    ApplicationContext ctx= new ClassPathXmlApplicationContext("classpath:config/dataSupport.xml"); 
    Object dataSource = ctx.getBean("userRepo"); 
    System.out.println(dataSource.getClass().getName()); 
    // use your beans here 

我剛創建演示豆。這裏是輸出:

2017-03-20 15:22:40 INFO ClassPathXmlApplicationContext - Refreshing org[email protected]16f65612: startup date [Mon Mar 20 15:22:40 EET 2017]; root of context hierarchy 
2017-03-20 15:22:40 INFO XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [config/dataSupport.xml] 
demo.repository.UserRepository 

BTW您可以使用try with resources的應用程序上下文:

try(ClassPathXmlApplicationContext ctx = 
    new ClassPathXmlApplicationContext("classpath:config/dataSupport.xml")) { 
    // use your beans here 
} 

其他資源

0

我認爲有以下應該工作:

ApplicationContext ctx= new ClassPathXmlApplicationContext("org/postprocessor/config/dataSupport.xml");

你並不需要指定「類路徑」,因爲你已經在使用ClassPathXmlApplicationContext的,你必須在一開始額外斜槓。

0

招:

src/org/postprocessor/config/dataSupport.xml

到:

src/main/resources/org/postprocessor/config/dataSupport.xml

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/15641594) – DimaSan

+0

OP問:「如何解決這個問題?答案是:「將你的配置文件移動到正確的位置」。有沒有不清楚這件事? – ninj

+0

您可以通過添加一些解釋來提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan

0

默認情況下Maven的編譯器插件,不包括非Java文件。這給你留下了兩個選擇。
1.將資源文件(的.properties,.XML等),以 「的src/main /資源」(recomended
2.使用Maven插件資源

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>copy-resources</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/path/where/you/want</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${basedir}</directory> 
       <includes> 
        <include>**/*.xml</include> 
       </includes> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
相關問題