2013-10-07 3 views
0

RCP 응용 프로그램을 빌드 중입니다. 하나의 플러그인 프로젝트 만 있고 제품으로 내보내려고합니다. sqlite 데이터베이스 파일을 사용합니다. 제품을 내 보내면 전혀 문제가없는 Run of Eclipse에서 내 응용 프로그램과 내 제품을 모두 테스트하는 동안 데이터베이스 액세스가 실패합니다. 이것은 내가Eclipse 제품 액세스 데이터베이스 파일에서 오류가 발생합니다.

dbConnection = DriverManager.getConnection("jdbc:sqlite:"+FileLocator.resolve(Platform.getBundle("BundleID").getEntry("dbFile")).getPath());

내 dbFile 내 프로젝트 루트 파일에 데이터베이스 연결을 열고 수출 한 후,이 플러그인 폴더에 BundleID.jar에서 발견되는 등 응용 프로그램을 열 수있는 방법입니다 그것은 계산 된 경로가 sth ...와 같다. "/plugins/BundleId.jar!/dbFile"

"!" 전에/문자열에 있습니다!

거기에 내가 이것을 극복하기 위해 할 수있는 일이 있습니까?

답변

1

URLFileLocator.toFileURL()을 사용하면 FileLocator.resolve()이 반환되어보다 일반적인 URL을 얻을 수 있습니다.

참고 : 정상적인 파일 URL을 반환 할 수 있도록 jar 파일을 임시 캐시로 확장합니다. 이 캐시는 지속성이 보장되지 않으므로 데이터베이스 변경 사항을 유지하려면 데이터베이스를 다른 위치에 두어야합니다.

하나의 가능성은 (Platform.getStateLocation(bundle)를 참조하십시오.

+0

를 플러그인 상태 데이터에 작업 공간의 .metadata로 데이터베이스를 복사하는 것입니다 당신이 할 내 보낸 프로젝트 루트 디렉토리 내 파일을 넣고 명령 줄 인수를 통해 경로를 공급하고 있다고 생각하십니까 – agagelis

+0

대답을 제안 위치를 추가했습니다. 플러그인 설치 위치는 일부 Eclipse 설치에서만 읽을 수 있습니다. –

+0

나는 실망스럽고 매우 혼란 스럽습니다 ... 나는 여전히 내 제품에 문제가 있습니다. 내가 응용 프로그램을 실행할 때 일식, .application 중 하나를 내. 제품 모두 잘 작동합니다. 내가 제품을 내보낼 때 나는 명령 행 인수를 통해 데이터베이스에 정확한 경로를 전달하려고 시도한 후에도 작동하게 만들 수 없습니다 !! ! 이것에 대한 좋은 설명 ???? – agagelis

관련 문제