2016-06-19 4 views
0

최근에는 Eclipse를 사용하기 시작했고 현재 작업중인 플러그인을 내보내는 문제가 발생했습니다. 검색을 시도했지만 지금까지 아무런 운 -하지만 대답은 이미 여기 있다면 누군가가 그것에 나를 가리킬 수 있다면 나는 감사 할 것입니다.외부 플러그인에 대한 의존성이있는 Eclipse 플러그인 내보내기

Eclipse로 n OSGi/Equinox 플러그인을 작성하고 있습니다. 플러그인은 확장을 허용하는 타사 시스템 용입니다. 기본적으로 응용 프로그램의 플러그인 폴더에있는 모든 병은 시작시 응용 프로그램에 자동으로로드됩니다. 나는 내 플러그인을 함께 관리 할 수 ​​있으며,로드가 잘되어 작동한다. 문제는 플러그인 폴더에있는 광산 옆에있는 다른 플러그인에 의존한다는 것입니다. 분명한 이유로 나는 플러그인을 내 플러그인 jar 파일에 패키지하지 않으려합니다. 종속성을 외부 아카이브로 추가하려고 시도했지만 내보내기가 중단됩니다. 플러그인 프로젝트를 내보낼 때 종속성 및 유형 누락에 대해 불만이 제기됩니다. (실제로 플러그인에 다른 jar 파일을 포함하면 모든 것이 작동하지만 분명히 덜 이상적입니다.)

그래서 어떻게 플러그인 프로젝트 종속성을 설정합니까? a) 외부 종속성 b) 경로 나 변수로 지정하지 않아도됩니다. 즉, 수출업자에게 "걱정하지 마라. 바로 옆에있을 것"이라고 어떻게 말할 수 있습니까?

편집 : 분명히 언급하지 않은 중요한 세부 사항이 있습니다. 내가 의존하는 외부 jar 파일은 이 아니고 OSGi 플러그인 인이 아니라 일부 클래스가있는 일반 jar 파일입니다. 제 3 자 시스템에서는 모든 것이 동일하게 보인다. (모두 플러그인 폴더 밑에 있고, 모두 애플리케이션에로드된다.)하지만 이클립스에서는 구분이 중요해 보인다.

답변

0

마지막으로 내 특정 문제에 대한 해결책은 외부 jar 파일을 빌드 속성 탭에 추가 클래스 경로 항목으로 추가하는 것입니다 (빌드의 "jars.extra.classpath = .jar"항목으로 변환 됨). 특성 파일). 또한 외부 종속성으로 자동 변경된 추가 클래스 경로 항목을 추가 한 다음 jar 파일을 프로젝트 자체에 추가했습니다.

이 두 가지 변경 사항을 통해 외부 jar 파일을 포함하지 않은 제 플러그인을 성공적으로 내보낼 수 있었지만 타사 시스템에로드 할 때이를 참조 할 수있었습니다.

2

플러그인의 MANIFEST.MF에서 종속성으로 다른 플러그인을 참조하는 경우 내보내기가 오류없이 작동해야합니다. 플러그인은 MANIFEST.MF의 Require-Bundle 목록에 나열되어야합니다.

편집기의 'Dependencies'탭에있는 'Required Plug-ins'목록에 추가하여 MANIFEST.MF 편집기에서이를 수행 할 수 있습니다.

참고 : 다른 플러그인을 참조 할 때는 항상이 방법을 사용해야합니다. Java 빌드 경로 나 그와 비슷한 것에 플러그인 jar를 추가하지 마십시오.

사용하려는 jar가 Eclipse 플러그인이 아닌 경우 플러그인의 일부로 플러그인을 포함하고 MANIFEST.MF의 Bundle-Classpath에 jar를 나열해야합니다. 이 작업을 수행 할 수없는 경우 당신은 같은 것을 사용하여 Bundle-Classpath에서 외부 항아리를 참조 할 수 있습니다 :

Bundle-Classpath: .,external:$LIB_LOCATION$/lib.jar 

. 코드 플러그인의에서 일반 항목입니다. external:$LIB_LOCATION$/lib.jar은 환경 변수 LIB_LOCATION에 의해 정의 된 위치에서 lib.jar을 찾습니다. 이 방법은 올바르게 진행하기가 어려울 수 있습니다.

+0

불행하게도 필요한 플러그인 목록은 플러그인 유형의 jar 파일 만 허용하는 반면 외부 jar 파일은 일부 클래스가있는 일반 jar 파일입니다 (위의 편집 참조). 더 이상의 제안? – Babszem

+0

비 플러그인 병에 관한 정보를 추가했습니다. –

+0

제안한 것을 시도했습니다. 외부 항아리 종속성으로 추가 항아리를 추가해야 빌드가 가능합니다. 그런 다음 외부 : .jar을 제안 된대로 번들 - 클래스 경로에 추가했지만 내보내기가 여전히 불행하게도 실패합니다. 오류 : // .jar = src가 존재하지 않습니다! – Babszem

관련 문제