2014-07-08 1 views
0

디렉토리 java.io.FileNotFoundException : 시험인 IntelliJ 클래스 경로 오류로 인한 다음 인 IntelliJ 프로젝트의

src/main/java/rewards/testdb/schema.sql 
src/main/java/rewards/testdb/test-data.sql 
src/main/java/rewards/testdb/config/alternate-datasource-config.xml 
src/main/java/rewards/testdb/config/AlternateDataSourceConfigTests.java 

콩 구성 (대체-데이터 소스-config.xml 파일에서) :

<bean id="dataSource-createdFromList" class="org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean" lazy-init="true"> 
    <property name="databaseName" value="rewards" /> 
    <property name="databasePopulator"> 
     <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator"> 
      <property name="scripts"> 
       <util:list> 
        <value>classpath:rewards/testdb/schema.sql</value> 
        <value>classpath:rewards/testdb/test-data.sql</value> 
       </util:list> 
      </property> 
     </bean> 
    </property> 
</bean> 

내 단위 테스트에서 오류가 발생 해요 :

Caused by: java.io.FileNotFoundException: class path resource [rewards/testdb/schema.sql] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157) 

Howeve R, 경우에 나는에 디렉토리를 수정 :

src/main/java/rewards/testdb/config/schema.sql 
src/main/java/rewards/testdb/config/test-data.sql 
src/main/java/rewards/testdb/config/alternate-datasource-config.xml 
src/main/java/rewards/testdb/config/AlternateDataSourceConfigTests.java 

내 콩 설정 수정 :

<bean id="dataSource-createdFromList" class="org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean" lazy-init="true"> 
     <property name="databaseName" value="rewards" /> 
     <property name="databasePopulator"> 
      <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator"> 
       <property name="scripts"> 
        <util:list> 
         <value>classpath:rewards/testdb/config/schema.sql</value> 
         <value>classpath:rewards/testdb/config/test-data.sql</value> 
        </util:list> 
       </property> 
      </bean> 
     </property> 
    </bean> 

... 내 테스트를 통과합니다.

왜?

+0

리소스를'src \ main \ resources'에 넣어야합니다. Xml 파일은 클래스 경로에 복사되지 않습니다. – maba

+0

그런데 왜 두 번째에 통과합니까? – renz

답변

0

스프링은 리소스 참조를 상대 (테스트 클래스)로 해석합니다.

<value>classpath:/rewards/testdb/schema.sql</value> 
<value>classpath:/rewards/testdb/test-data.sql</value> 

프로젝트로 아이디어 프로젝트 구성에서

+0

나는 이미 그, 동일한 오류를 시도했다. – renz

+0

정말 중요한 것은 아니지만, IDE 내부에서 다음과 같이 할 수 있습니다. 리소스를 올바른 디렉토리 (src/main/resources 또는 src/test/resources)로 옮겨 보았습니까? – marthursson

1

, 지점 대상 경로 (초기 앞으로 자원 사양에 슬래시주의) : 당신은 항상 즉, 자원 참조에 절대 경로를 사용할 수 있는지 확인해야 대상 폴더 : 구성 편집 -> 배포 -> 이슈 편집 (연필 아이콘 클릭) -> "출력 디렉토리"입력을 "your_project_folder_path/target"으로 설정하십시오. 그러면 jdbc.properties 파일을 편집 할 때마다 다시 시작될 때 적용됩니다.

이것은 maven 웹 프로젝트에 유효합니다.