2008-09-14 3 views
1

우리는 실행 가능한 jar 파일의 매니페스트 파일에 classpath를 설정 한 간단한 스프링 - 하이버 네이트 애플리케이션 (콘솔 애플리케이션)을 가지고있다. 그리고 응용 프로그램은 jtds 드라이버를 사용하여 데이터베이스에 연결합니다. Windows 시스템과 jdk1.6에서 예상대로 작동합니다. 그러나 Linux에서는 앱이 드라이버를 찾을 수 없습니다. java -jar MainClassName을 사용하여 프로그램을 실행 중입니다.jtds 빌드 된 프로젝트를 실행할 때 적합한 드라이버 예외 없음

이 문제가 발생하는 이유는 무엇입니까?

+0

당신이 어떤 오류를 볼 수 있습니까 메이븐 버그에게 무엇입니까? NoClassDefError 또는 ClassNotFoundException 인 경우 클래스 경로 문제 일 수 있습니다. –

답변

0

솔직히 나쁜 CLASSPATH처럼 들립니다. 이 문제의 디버깅을 시작하기 전에 jtds 패키지를 기본 패키지/클래스와 동일한 경로에 복사하고 작동하는지 확인하는 것이 좋습니다. 이렇게하면 Classpath 매니페스트가 문제인지 여부를 확인할 수 있습니다. Spring/Hibernate는 lib 디렉토리에 의존하기 때문에 클래스 패스가 기본 구조이기 때문에 항상 classpath에있게됩니다. 테스트 할 때 lib 디렉토리를 사용하십시오.

희망 사항이 도움이 될 것입니다. 또한 경로, 클래스 경로 및 매니페스트 파일과 같은 자세한 정보를 보내십시오.

+0

Fernando, 클래스 경로는 Maven의 매니페스트 파일에서 생성되며 Windows 컴퓨터에서 올바르게 작동합니다. 어쨌든 월요일에 매니페스트 파일에 클래스 경로 항목을 게시합니다. –

2

이 문제는 jdbc.url에 잘못된 URL이 있었기 때문에 발생했습니다. 이는 maven이 filter.properties에 정의 된 url 대신 jdbc.url 속성을 특별한 속성으로 그리고 프로파일 링하는 동안 처리하기 때문입니다. 그리고 그 이유는 "적절한 드라이버 없음"예외입니다. 그 질문은 분명해야했다.

어쨌든 jdbc.url 속성의 이름을 jdbc.url.somename으로 바꿔야한다고 수정해야합니다. 이렇게하면 maven 프로파일 링 문제가 해결되었습니다. "server.name"이라는 속성에 대해서도 비슷한 maven 프로파일 링 문제가있었습니다.이 필터 속성은 maven 프로파일 링을 혼란스럽게합니다. 그 건물의 이름도 바꿔야했습니다.

다시 한번 감사드립니다. Fernando.

관련 문제