2012-09-22 2 views
0

OSGI 프레임 워크에 익숙해지기위한 첫 번째 단계를 수행하려고합니다. 그러나 패키지를 하나만 내보내는 번들을 시작할 수조차 없습니다. 프레임 워크가 나에게 소리가 나는 것처럼 들리는 오류는 '번들을 시작하려면 openjsip.service.locationservice 패키지를 해결해야합니다. 하지만이 패키지는 내 번들에서 제공합니다! 어쨌든, 내가 틀렸다고 생각하지만 문제를 파악할 수 없어 누군가가 나를 도울 수 있습니까?간단한 인터페이스를 내보낼 때 해결되지 않은 제약

ERROR: Bundle openjsip.locationservice [6] Error starting file:////tmp/locationservice-1.0.0-SNAPSHOT.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle openjsip.locationservice [6]: Unable to resolve 6.0: missing requirement [6.0] osgi.wiring.package; (&(osgi.wiring.package=openjsip.service.locationservice)(version>=1.0.0))) 
org.osgi.framework.BundleException: Unresolved constraint in bundle openjsip.locationservice [6]: Unable to resolve 6.0: missing requirement [6.0] osgi.wiring.package; (&(osgi.wiring.package=openjsip.service.locationservice)(version>=1.0.0)) 
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3826) 
at org.apache.felix.framework.Felix.startBundle(Felix.java:1868) 
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) 
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) 
at java.lang.Thread.run(Thread.java:722) 

여기 내 MANIFEST.MF입니다 :

Manifest-Version: 1.0 
Bnd-LastModified: 1348338100498 
Build-Jdk: 1.7.0_05 
Built-By: devel 
Bundle-ManifestVersion: 2 
Bundle-Name: locationservice 
Bundle-SymbolicName: openjsip.locationservice 
Bundle-Version: 1.0.0.SNAPSHOT 
Created-By: Apache Maven Bundle Plugin 
Export-Package: openjsip.service.locationservice;uses:="javax.sip.header 
,javax.sip";version="1.0.0.SNAPSHOT" 
Import-Package: javax.sip;version="[1.2,2)",javax.sip.header;version="[1 
.2,2)" 
Tool: Bnd-1.50.0 

답변

1

오류 메시지가 게시 한 MANIFEST.MF 일치하지 않는 것 같습니다. 당신이 그 사이에 그것을 다시 만들 수 있습니까?

번들 패키지 openjsip.service.locationservice을 가져오고 해당 가져 오기를 해결할 수 없다는 오류 메시지가 표시됩니다. 그러나 매니페스트에 따르면 javax.sipjavax.sip.header 만 가져올 수 있습니다. 따라서이 오류 메시지는 게시 된 번들 매니페스트에서 가져올 수 없습니다.

+0

많은 감사, 닐, 내 번들을 가져간 곳으로 주목했습니다. 그것은 /target 대신에/tmp입니다 (Maven을 사용하고 있습니다). 내가 MANIFEST 내부를 들여다 보았을 때 내가 게시 한 것과 실제로 완전히 다릅니다. IntelliJ IDEA가 나에게 속임수를 사용하고 있습니다. 마술처럼이 파일을/tmp에 만들고 OSGI 프레임 워크에 전달합니다. 이제 무슨 일이 일어나는지 조사해야 해. – ievgen

0

도움을 주신 모든 분들께 고마워요.이 문제는 실제로 IDEA 구성에서 발생합니다. 여기서는 패싯 구성을 사용하여 MANIFEST.MF를 자체적으로 생성합니다.이 구성은 아파치 메이븐 플러그인에 의존합니다. 어떤 이유로 플러그인은이 플러그인을 무시하거나 아직 쌍으로 작동하지 않습니다. 해결 방법은 '미리 정의 된 MANIFEST.MF를 target/classes/META-INF에서 사용'이라고 알려주는 것입니다.

다시 한번 감사드립니다.