다른 번들 종속성 번들 내보내기 :내가이 OSGI 구성이
/configurations
config.ini
somebundle.properties
/plugins
bundleA
bundleB
osgi-3.4.2-R34x_v2008826-1230.jar
org.eclipse.equinox.common_3.4.0.v20080421-2006.jar
org.eclipse.update.configurator_3.2.201.R34x_v20080819.jar
com.test.arquitectura.osgi.ConfiguratorModule_1.0.0.jar
내 config.ini 파일은 다음과 같이이다 : 나는
java -Xms256M -Xmx1280M -jar osgi-3.4.2-R34x_v20080826-1230.jar
을 실행할 때, AFAIK, 그래서
[email protected]:start, \
[email protected]:start, \
[email protected]:start
osgi.clean = true
eclipse.ignoreApp=true
osgi.parentClassLoader=app
equinox.common 및 update.configurator와 함께 config.ini를 읽으면/plugins 폴더에 배포 된 모든 번들을 "감지"합니다. 그 후 ConfiguratorModule (사용자 정의 번들)은 컨텍스트에서 모든 번들을 읽고 각 메서드의 start 메소드 (bundleA 및 bundleB)를 실행합니다. 나는 bundleA 및 bundleB에서 정의 된 일부 clases를 사용하는 Eclipse 프로젝트 (bundleC)를 가지고, 그래서 MANIFEST.MF는 다음과 같습니다
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: BundleC Plug-in
Bundle-SymbolicName: com.test.bundlec
Bundle-Version: 1.0.0
Bundle-Activator: com.test.bundlec.Activator
Import-Package: javax.naming,javax.sql,org.osgi.framework;version="1.3
.0",org.osgi.util.tracker;version="1.3.1"
Bundle-ClassPath: .
Require-Bundle: com.test.BundleA;bundle-version="1.0.0",
com.test.BundleB;bundle-version="1.0.0"
그래서, 나는 플러그인 (항아리)에 bundleC 프로젝트 파일을 생성합니다. "Require-bundle"옵션에 두 개의 번들이 있으므로이 프로젝트 (BundleA와 BundleB)는 bundleC 클래스 경로에 있어야합니다. 그렇습니까? 따라서이 경우, 번들 ("플러그인 개발"로 내보내기)을 생성하고 새 번들을 플러그인 폴더에 배치합니다. 내가 빠진 것이 있습니까?
내가 옳다고 말한 모든 것이 맞다면 여기에 내 문제가있다. 나는 BundleA와 BundleB를위한 플러그인 jar 파일을 가지고있다. 그러나 그것들의 소스 코드를 가지고 있지 않다. BundleC를 jar 플러그인으로 내보낼 때 에러가 발생한다. 왜냐하면 명백한 것처럼, 필요한 클래스를 찾을 수 없기 때문이다. BundleA 및 BundleB에서 사용합니다. classpath에 required-bundles없이 플러그인을 생성 할 수있는 방법이 있습니까?
나는 그들을 "디 컴파일"한 다음 프로젝트를 만들고 BundleC 클래스 패스에 추가하려고했습니다. 플러그인을 생성 한 다음 플러그인 폴더에 넣을 수 있지만 osgi 환경을 실행하면 bundleC가 발견되지 않습니다. 내가 뭘 잘못하고 있니? 답 BundleA 및 BundleB에서 뭔가를 사용하려면
정확한 오류나 스택 추적 등을 게시하십시오. – katsharp