Apache Felix에서 작은 EMF 기반 응용 프로그램을 실행하려고합니다. Felix가 Android 기기에서 실행 중입니다. 나는 이클립스를 사용하고 있지만 bnd가없고 maven이 없다. 내 플러그인 프로젝트의OSGi - 번들의 내부 패키지에 액티베이터가 액세스 할 수 없습니다.
org.eclipse.emf.common_droid-2.7.0.v20120127-1122.jar
org.eclipse.emf.ecore_droid-2.7.0.v20120127-1122.jar
org.eclipse.emf.ecore.xmi_droid-2.7.0.v20120127-1122.jar
의 구조 :
[+] src
---> com.androidosgi.notifier
---> com.androidosgi.notifier.notification
---> com.androidosgi.notifier.notification.impl
---> com.androidosgi.notifier.notification.util
[+] META-INF
---> MANIFEST.MF
Notification-1.0.ecore
Notification-1.0.ecorediag
Notification-1.0.ecorert
NotificationComponent.xmi
활성제가 com.androidosgi.notifier에
나는의 패키지를 내보내는 EMF 번들을 얻었다.MANIFEST.MF는 : 나는은 OSGi의 번들을 설치하기 전에
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Notification Testing
Bundle-SymbolicName: com.androidosgi.notifier
Bundle-Version: 12.6.5
Bundle-Activator: com.androidosgi.notifier.Activator
Bundle-Vendor: Homer Simpson
Import-Package:
com.androidosgi.notifier.notification,
com.androidosgi.notifier.notification.impl,
com.androidosgi.notifier.notification.util,
org.eclipse.emf.common,
org.eclipse.emf.common.archive,
org.eclipse.emf.common.command,
org.eclipse.emf.common.notify,
org.eclipse.emf.common.notify.impl,
org.eclipse.emf.common.util,
org.eclipse.emf.ecore,
org.eclipse.emf.ecore.impl,
org.eclipse.emf.ecore.plugin,
org.eclipse.emf.ecore.resource,
org.eclipse.emf.ecore.resource.impl,
org.eclipse.emf.ecore.util,
org.eclipse.emf.ecore.xmi,
org.eclipse.emf.ecore.xmi.impl,
org.eclipse.emf.ecore.xmi.util,
org.eclipse.emf.ecore.xml.namespace,
org.eclipse.emf.ecore.xml.namespace.impl,
org.eclipse.emf.ecore.xml.namespace.util,
org.eclipse.emf.ecore.xml.type,
org.eclipse.emf.ecore.xml.type.impl,
org.eclipse.emf.ecore.xml.type.internal,
org.eclipse.emf.ecore.xml.type.util,
org.osgi.framework;version="1.3.0"
Bundle-ClassPath: .
Export-Package: com.androidosgi.notifier;x-internal:=true,
com.androidosgi.notifier.notification;x-internal:=true,
com.androidosgi.notifier.notification.impl;x-internal:=true,
com.androidosgi.notifier.notification.util;x-internal:=true
, 나는 그것을 "dexed"와 번들로 classes.dex를 추가했다.
내가 얻을 시작하려고하면
: NoClassDefFoundError를어떤 아이디어 나 솔루션? :) 감사합니다
매니페스트를 보면 번들이 많은 내부 패키지를 내보내는 이유는 무엇입니까? 예외에 대한 스택 추적이 있습니까? 리플렉션을 사용하여 EMF가 번들의 내부 클래스를로드합니까? Android를 사용하지 않을 때는 Equinox 또는 Felix를 사용하고 있습니까? –
내부 패키지 가져 오기는 작동시키기위한 것일뿐입니다. 그 전에는 내부 패키지가없고 수출이없는 버전이있었습니다. EMF 반사가 사용되었는지는 확실하지 않지만 그렇게 생각합니다. 춘분,하지만 지금 나는 다시 펠릭스로 바뀌었다. 고맙습니다 ! –