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입니까? 미리 감사드립니다.
세드릭
문제가 있는지는 확실치 않지만 속성 자리 표시 자에 "classpath"다음에 별표가 없어야합니다. – Steve
sql.properties는 프로젝트에 어디에 저장되어 있습니까? 그리고 생성 된 JAR 파일은 어디에 있습니까? – cowls
여러 개의 sql.properties가 서로 다른 폴더에 있지만 공통 루트 (com/mypackages와 같은 것)가 있습니다. – user2622053