2014-01-10 3 views
0

jars 내에 응용 프로그램을 배포 한 이후로 내 속성 파일에 문제가 있습니다. WEB-INF/classes 디렉토리에있을 때 문제가 없었습니다. 내 문제는 jar 파일 내부의 속성 파일에서만 발생합니다.jar에있을 때 속성 파일을 찾을 수 없습니다.

설명해 드리겠습니다. 나는 코드를 단순화 할 것이다. IPX 전화에 사업장 개체

내 응용 프로그램 거래

이 IpxDaoImpl 문자열 속성라는 DAO 클래스있다 (그것이 무엇인지 알고 있으면 유용 아니다), SQL이이 클래스는

public class IpxDaoImpl implements IpxDao extends SimpleJdbcDaoSupport { 
    private String listAllIpxSql; // query for listing IPX in Database 

    public void listAllIpx() { 
    // Does a query in Database using the variable listAllIpxSql 
    // ... 
    } 

    public void setListAllIpxSql(String listAllIpxSql) { 
    this.listAllIpxSql = listAllIpxSql; 
    } 
} 

조회되는 app.xml-dao.xml이라는 config xml 파일에 정의되어 있습니다. 그것은 포함 appContext-commo-dao.xml :

<bean id="ipxDao" class="com.IpxDaoImpl" parent="myGenericDao"> 

    <property name="listAllIpxSql" value="${ipx.list}" /> 

</bean> 

특성 파일을로드하는 방법에 대해 설명 다른 구성 XML 파일이 있습니다. 여기에는 다음이 포함됩니다.

<context:property-placeholder location="classpath*:**/sql.properties" /> 

그리고 IPX에 대한 쿼리에 적합한 sql.properties 파일이 있습니다. 그것은 다음을 포함합니다 :

ipx.list=SELECT * FROM IPX 

이제 WEB-INF/classes에 응용 프로그램을 배포하면 모든 것이 잘됩니다. 그러나 우리는 병을 생성해야하는 통합 환경을 가지고 있습니다. 위에서 언급 한 모든 파일은 동일한 항아리에 있습니다. 그런 다음 배포 할 때이 오류가 발생합니다. 자리 표시 자 'ipx.list'을 해결할 수 없습니다 속성 파일 sql.properties가없는 것 같습니다.

이 속성 파일을 추출하여 적절한 폴더가있는 WEB-INF/classes 디렉토리에 넣으려고했습니다. 그리고 이제는 효과가 있습니다.

내 코드가 잘못되었습니다. 그것은 placeholer입니까? 미리 감사드립니다.

세드릭

+0

문제가 있는지는 확실치 않지만 속성 자리 표시 자에 "classpath"다음에 별표가 없어야합니다. – Steve

+0

sql.properties는 프로젝트에 어디에 저장되어 있습니까? 그리고 생성 된 JAR 파일은 어디에 있습니까? – cowls

+0

여러 개의 sql.properties가 서로 다른 폴더에 있지만 공통 루트 (com/mypackages와 같은 것)가 있습니다. – user2622053

답변

0

기준에서 classpath:/sql.properties

와 시도 :

"클래스 경로 * :"주의하시기 바랍니다 개미 스타일의 패턴과 결합 될 때 는 적어도 하나 개의 루트 안정적으로 작동합니다 실제 대상 파일이 파일에있는 경우가 아니면 패턴이 시작되기 전에 디렉토리에 복사하십시오.

자세한 내용은 http://docs.spring.io/spring/docs/2.5.5/reference/resources.html#resources-wildcards-in-path-other-stuff을 참조하십시오.

+0

몇 가지 sql.properties 파일이 있으므로 classpath * : com/mypackages/**/sql.properties – user2622053

+0

을 사용해 보겠습니다. classpath *를 떠났지만 다른 sql.properties 파일을 포함하는 공용 폴더의 시작 부분을 작성했습니다. – user2622053

+0

그래서이 해결책은 작동합니다 : classpath * : com/mypackages/**/sql.속성 감사합니다! – user2622053

관련 문제