다음과 같은 상황이 있습니다. 나는 foo.jar라는 제 3 자 항아리에 의존합니다. 이 항아리에는 많은 osgi가 아닌 종속성이 있습니다. 새 프로젝트 "기존 JAR 아카이브에서 플러그인"을 만들고 foo.jars non-osgi 종속성을 모두 선택하여 foo.libs.jar이라는 "deployable plugin and fragment"로 내 보냈습니다.RCP4 프로젝트에 non-osgi jar 추가
내 RCP4 프로젝트는 기능 기반 제품입니다. 내 주요 RCP 프로젝트에서 대상 파일로 이동하여 컨텐츠 탭으로 이동하여 foo.jar 및 foo.libs.jar에 확인 표시를합니다. 그런 다음 프로젝트 파일로 이동하여 "validate"를 선택하고 "No problems were detected"라는 메시지가 나타납니다.
내가 잘못하고있는 일이나이 일을하기 위해해야 할 일이 무엇인지 실마리가 있습니까? foo.libs.jar을 foo.jar의 종속물로 명시 적으로 설정해야합니까? 내 주요 프로젝트 manifest-> dependency tab 및 runConfigurations-> Plug-ins에서이 작업을 수행하고 foo.libs.jar을 feature.xml -> Included plug-in tab에 추가했으나 보이지 않았습니다. 일하다.
감사합니다.
=== 업데이트 ===은
나는 내 문제가 번들 조각 및 임베디드 의존성의 경우에 해당 할 수있다 생각합니다. 예를 들어 :- I create foo.libs.jar. One of the jars inside it is activemq.jar
I need access to javax.jms.ExceptionListener
- The manifest for foo.libs.jar contains activemq.jar in the
Bundle-ClassPath, and javax.jms in the Export-Package sections
- foo.jar contains foo.libs.jar in its Class-Path. It contains
javax.jms in its Import-Package and Export-Package sections
- I created a "Plug-in from existing JAR archives" project which has
foo.jar and foo.libs.jar in it.
- The manifest for the project has foo.jar and foo.libs.jar in the
Bundle-Classpath section. The Import-Package section contains
javax.jms
- If I export this bundle to my project, and run validate I get
errors saying javax.jms cannot be found.
- If I omit the javax.jms from the bundles Import-Package there
are no validation errors but I will get a ClassNotFoundException
이 포함 된 항아리와 번들 - 클래스 경로에 문제가있을 수 있습니다처럼 좀 기분이 ...
내 번들
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my.name
Bundle-SymbolicName: my.name
Bundle-Version: 1.0.0
Bundle-ClassPath: foo.jar
Export-Package: list_of_my_packages
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
을 가지고 있으며, foo.jar에이
있다Manifest-Version: 1.0
Bnd-LastModified: 1489769501680
Bundle-ManifestVersion: 2
Bundle-Name: foo
Bundle-SymbolicName: foo
Bundle-Version: 1.0.0
Class-Path: foo.libs.jar
Created-By: 1.8.0_71 (Oracle Corporation)
Export-Package: javax.jms (and other stuff, omitted)
Import-Package: javax.jms;resolution:=optional (and other stuff, omitted)
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
Tool: Bnd-2.4.0.201411031536
그리고 foo.libs.jar는
있다Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Foo libs
Bundle-SymbolicName: foo.libs
Bundle-Version: 1.1.0
Bundle-ClassPath: activemq-all.jar, (and others which I ommitted)
Export-Package: javax.jms, (and others which I ommitted)
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
도와 주셔서 감사합니다. 이. 나는 모든 것을 패키지화하고 업데이트 된 게시물에 단계를 나열한 방법을 약간 변경했습니다. 추가 지침을 제공 할 수 있습니까? – ekjcfn3902039
번들의 매니페스트를 여기에 게시해도 되겠습니까? – skapral
나는 앞서 가서 원래 게시물에 매니페스트를 추가했습니다. 내가 아는 한 평범한 것만 빼고는 아무것도 안된다. – ekjcfn3902039