현재 EclipseStarter 클래스의 기능을 사용하여 일부 번들을 실행하려고합니다. Eclipse에서 직접 프로그램을 실행하면 OSGi 서비스 번들이로드되고 다른 번들을 설치하고 시작할 수 있습니다.EclipseStarter 클래스에서 OSGi 환경을 사용할 수 있도록 OSGi 환경을 구성하는 방법은 무엇입니까?
Java 프로그램을 실행 가능한 jar 파일로 내보내고 명령 줄에서 실행하면 환경에서 OSGi 서비스 번들 대신 "시스템 번들 [0]"이라는 번들을로드합니다. 새 번들을 설치하려고 할 때마다 Nullpointer-Exception이 발생합니다.
jar 파일에서 OSGi 환경을 사용하려면 프레임 워크 속성 내에 몇 가지 특수 구성을 설정해야합니까?
frameworkProperties.put("osgi.clean", "true");
frameworkProperties.put("osgi.console", "true");
업데이트 : 현재 나는 단지 다음과 같은 두 가지 값을 설정하고있어
나는 내 문제는 사용되는 자바 클래스 패스 함께 할 수있는 뭔가가있을 것 같아요.osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.4.3.R34x_v20081215-1030
을하지만 난 단지 jar 파일을 실행하면 나는 다음과 같은 오류 로그를 받고 있어요 : :이
java -classpath /home/markus/org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar:test.jar
Starter.Starter
모두 같은 클래스 패스에 프레임 워크 - 번들을 추가 할 경우 잘 작동
[email protected]:~/configuration$ cat 1244201504478.log
!SESSION 2009-06-05 13:31:44.895 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_13
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=de_DE
Command-line arguments: -clean -console
!ENTRY org.eclipse.osgi 4 0 2009-06-05 13:31:44.897
!MESSAGE An unexpected runtime error has occurred.
!STACK 0
java.lang.NullPointerException
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.readStateData(BaseStorage.java:743)
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:698)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.getState(BaseAdaptor.java:390)
at org.eclipse.core.runtime.adaptor.EclipseStarter$1.bundleChanged(EclipseStarter.java:307)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1234)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:211)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:141)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1518)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1469)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:281)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.launch(StartLevelManager.java:247)
at org.eclipse.osgi.framework.internal.core.SystemBundle.resume(SystemBundle.java:201)
at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:644)
at org.eclipse.osgi.framework.internal.core.OSGi.launch(OSGi.java:51)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:313)
at CanEmulator.OSGiFramework.run(OSGiFramework.java:119)
at java.lang.Thread.run(Thread.java:619)
!ENTRY System Bundle 4 0 2009-06-05 13:31:44.898
!MESSAGE
!STACK 0
java.lang.NullPointerException
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.readStateData(BaseStorage.java:743)
at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:698)
at org.eclipse.osgi.baseadaptor.BaseAdaptor.getState(BaseAdaptor.java:390)
at org.eclipse.core.runtime.adaptor.EclipseStarter$1.bundleChanged(EclipseStarter.java:307)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:1234)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:211)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:141)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1518)
at org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1469)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:281)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.launch(StartLevelManager.java:247)
at org.eclipse.osgi.framework.internal.core.SystemBundle.resume(SystemBundle.java:201)
at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:644)
at org.eclipse.osgi.framework.internal.core.OSGi.launch(OSGi.java:51)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:313)
at CanEmulator.OSGiFramework.run(OSGiFramework.java:119)
at java.lang.Thread.run(Thread.java:619)
현재 Eclipse 프로젝트에서 외부 라이브러리로 framework-jar-file을 사용하고 있습니다. 난 ... 실행 파일에 내 프로젝트를 내보낼 때 일도 잘못 것을
BR,
마르쿠스 생각
응용 프로그램에 OSGi 프레임 워크가 포함되어 있습니까? 또는 다른 프레임 워크 인스턴스 내부에서 실행되도록 설계된 번들입니까? 어떤 OSGi 프레임 워크를 사용하고 있습니까? – Cogsy
저는 최신 Equinox OSGi 프레임 워크 인 org.eclipse.osgi_3.4를 사용하고 있습니다.3.R34x_v20081215-1030.jar – Markus