Eclipse RCP 프로젝트에서 작업하고 있습니다. 현재 dependencies
플러그인 프로젝트를 만들고 모든 jars 라이브러리를 해당 프로젝트에 넣고 모든 패키지를 내 보냅니다. 이 방법은 거대한 repo를 줄 것이므로 우리는 Tycho/Maven을 사용하여 우리를위한 의존성을 파악하게합니다.Tycho/Maven을 사용하여 Eclipse RCP에서 jars 종속성을 제거하는 가장 좋은 방법은 무엇입니까?
첫 번째 방법은 dependenciec
프로젝트를 제거하고 을 사용하여 기존 jars 라이브러리를 p2 형식 repo로 변환하는 것입니다. p2 repos에서 모든 라이브러리를 설치하고 각각 MANIFEST.MF
의 Require-Bundle
섹션에 필수 번들을 추가하십시오. 이것은 이 Require-Bundle
에있는 모든 프로젝트에서 수동으로 해당 번들 이름으로 바꾸어야하기 때문에 조금 지루합니다. 그리고 결국, Tycho를 사용하여 프로젝트를 성공적으로 실행할 수 있었지만 Eclipse에서는 java.lan.NoClassDefFoundError: Could not initialize class X
이되었습니다. 티코가 그들과 이클립스의 일부에 의존 내가 몇 가지 구성 파일이 생각
는 나머지에 따라 달라집니다,하지만 난 그게 뭔지 모르겠어요.
두 번째 방법은 dependencies
프로젝트의 모든 병을 제거하지만 Require-Bundle
또는 Import-Package
에서 그 (것)들을 추가하고있다. 그러나 Export-Package
섹션에서 이클립스는이 패키지가 존재하지 않는다고 불평 할 것이므로 둘 다 작동하지 않을 것이다. 따라서 다른 프로젝트는이 dependencies
프로젝트에 의존하므로 프로젝트가 필요한 패키지를 찾지 못해 Eclipse에서 더 많은 오류가 발생합니다.
누구든지이 문제를 해결하기위한 최선의 방법을 알고 있습니까?
업데이트 : 기본적으로 첫 번째 방법을 사용하는 대신 Require-Bundle
의 각 프로젝트에 Import-Package
에 종속성을 추가하고있어
. 이렇게하면 특정 번들 버전을 지정할 필요가 없어집니다. 단, 동일한 번들 버전을 지정해야합니다. 단, 동일한 API를 제공하고 호환되는 경우 응용 프로그램이 작동합니다. 그래서 매일 개인 p2 저장소를 업데이트하므로 각 프로젝트마다 MANIFEST.MF
을 변경할 필요가 없습니다.
유일한 MANIFEST.MF
내가 수동으로 의존성을 추가해야합니다 Require-Bundle
은 우리 자신이 개발 한 라이브러리입니다. 이를 사용하지 않으면 Tycho는 개인 P2 저장소에서 필요한 종속성을 가져 오지 않습니다. 여전히 NoClassDefFoundError
을 얻는다면, Run-> Run Configuration ..-> plug-ins에서 모든 플러그인을 추가해보십시오. 도움이 될 것입니다.
모든 종속 항아리가있는 프로젝트를 만드는 목적은 무엇입니까? 대신 feature.xml을 사용할 수 없습니까? – nbz
당신이 묘사하는 것은 아마도 할 수 있습니다 -하지만 당신은 뭔가 잘못하고 있습니다. 그러나 당신은 우리가 단지 짐작할 수있을 정도로 애매합니다. 세부 정보를 추가하십시오. 매니지드 – oberlies