2014-04-04 4 views
0

간단한 OSGi 번들이 작성되었으며 여기에 소스 파일이 있습니다. 춘분 OSGi 컨테이너에 설치하면 자동으로 해결되지 않습니다. 누군가 내가 여기서 잘못하고있는 것을 설명 할 수 있습니까?OSGi 번들이 자동으로 해결되지 않음

package org.sample.api; 

/** 
* Created on 3/11/14. 
*/ 
public interface Hello { 

    void sayHello(); 
} 

이것은 번들의 pom.xml 파일입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>osgi</artifactId> 
     <groupId>osgi</groupId> 
     <version>1.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>sample-api</artifactId> 
    <version>1.0</version> 
    <packaging>bundle</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.3.5</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-Vendor>Sample Inc</Bundle-Vendor> 
         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
         <Export-Package> 
          org.sample.api*;version=1.0.0 
         </Export-Package> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

MANIFEST.MF는

Manifest-Version: 1 
Bnd-LastModified: 1396602001251 
Build-Jdk: 1.6.0_45 
Built-By: Zeus 
Bundle-ManifestVersion: 2 
Bundle-Name: sample-api 
Bundle-SymbolicName: sample-api 
Bundle-Vendor: Sample Inc 
Bundle-Version: 1.0.0 
Created-By: Apache Maven Bundle Plugin 
Export-Package: org.sample.api;version="1.0.0" 
Tool: Bnd-1.43.0 

이 번들 설치 콘솔 출력

Bundle id is 7 
RegisteredServices null 
ServicesInUse  null 
LoaderProxy   sample-api; bundle-version="1.0.0" 
Fragments   null 
ClassLoader   null 
Version    1.0.0 
LastModified   1396605985751 
Headers    Bnd-LastModified = 1396602001251 
Build-Jdk = 1.6.0_45 
Built-By = Zeus 
Bundle-ManifestVersion = 2 
Bundle-Name = sample-api 
Bundle-SymbolicName = sample-api 
Bundle-Vendor = Sample Inc 
Bundle-Version = 1.0.0 
Created-By = Apache Maven Bundle Plugin 
Export-Package = org.sample.api;version="1.0.0" 
Manifest-Version = 1 
Tool = Bnd-1.43.0 


BundleContext  null 
BundleId    7 
StartLevel   1 
SymbolicName   sample-api 
BundleData   sample-api_1.0.0 
KeyHashCode   7 
StateChanging  null 
BundleDescription sample-api_1.0.0 
Framework   [email protected] 
ResolutionFailureException org.osgi.framework.BundleException: The bundle "sample-api_1.0.0 [7]" could not be resolved 
Revisions   [sample-api_1.0.0] 
Key     7 
ProtectionDomain  null 
Location    file:/home/Zeus/idea-projects/osgi/sample-api/target/sample-api-1.0.jar 
State    2 
Bundle     7|Installed | 1|sample-api (1.0.0) 

답변

1

단지에서 발생하는 MANIFEST.MF를 게시하시기 바랍니다 있습니다. 나는 pom에 무엇인가 잘못된 것을 볼 수 없다.

번들이 해결되지 않은 경우 그 상태는 무엇입니까? 설치 되었습니까? 하나의 가능한 이유는 번들의 전이 의존성 중 일부가 컨테이너에서 사용 가능하지 않을 수 있기 때문일 수 있습니다.

P.S : maven-bundle-plugin에 최신 버전 2.4.0을 사용할 수 있습니다.

EDIT1 이 내가 가진 매니페스트입니다 :

매니페스트-버전 : 1.0
BND-LASTMODIFIED : 1396605817562
빌드 - JDK : 1.7.0_45
내장함으로써 : anshuman
번들 - ManifestVersion : 2
번들 이름 : sample-api
번들 SymbolicName : 샘플 api
번들 공급 업체 : 샘플 Inc 01 23, 번들 - 버전 : 1.0.0
-만든이 : 아파치 메이븐 번들 플러그인
수출 포장 : org.sample.api, 버전 = "1.0.0"
도구 : BND - 2.1.0.20130426-122213

EDIT2 번들을 설치 한 후 새로 고치고 시작하기 바랍니다.
새로 고침 7
시작 7
여기서 7은 번들 ID입니다.

+0

매니페스트 데이터를 추가했습니다. INSTALLED 상태입니다. "diag"명령을 사용할 때 아무런 해결되지 않은 제약 조건이 없다고 말합니다. –

+0

반드시 필요한 것은 아니지만 문제를 해결하려면 Bundle-Activator를 추가하고 시작이 호출되는지 확인하십시오. – Anshuman

+0

내 컴퓨터에서 예제를 실행하려고했는데 (Karaf, 2.4.0 번들 플러그인을 사용하고 있습니다) 제대로 작동합니다. 활성 | 80 | 1.0.0 | sample-api – Anshuman

0

번들과 함께 활성기가없는 것처럼 보입니다. 적어도 주어진 샘플에는 하나의 샘플이 포함되어 있지 않으며 생성 된 Manifest 출력에 Bundle-Activator 부분이 포함되어 있지 않습니다. 이 시점에서 번들은 활성 상태가 아니므로 해결 된 상태에 있다고 말할 수 있습니다.

0

INSTALLED 상태는 오류 조건이 아닙니다. 번들이 설치되었다는 의미 일뿐입니다.

실제 오류 메시지가 나타나면 세부 정보를 제공해주십시오.

관련 문제