有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java OSGi为什么我的包命名为“unknown0.0.0”和MANIFEST。MF文件被覆盖了吗?

我是新来的,现在正在学习OSGi。我正在尝试使用OSGi清单创建maven项目。MF文件在里面。在对bundle activator类和清单进行编码之后。MF文件,I“mvn包”它,并且OSGi在控制台中安装它。然后,当我对包进行mvn打包时,我的包被命名为这样的名称而不是名称时,就会出现这个问题

unknown-0.0.0

然后,当我检查舱单时。MF文件在内存中。罐子,里面是这样的:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: 5111100191
Created-By: Apache Maven 3.2.1
Build-Jdk: 1.8.0_40

而不是我这样编码的时候:

Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.pragprog.HelloWorld
Bundle-Name: HelloWorld
Bundle-Version: 1.0.0
Bundle-Activator: com.pragprog.hello.HelloWorld
Import-Package: org.osgi.framework

我猜舱单上。当我对代码进行mvn打包时,不知何故没有加载它。这是我的项目目录结构

HelloWorld
           /src
                     /main
                            /java
                                       /com.pragprog.hello.HelloWorld.java
                            /resources
                                       /META-INF/MANIFEST.MF
                     /test
                            /java
                            /resources
           /target
                     /**.jar file here**/
           pom.xml

我已经找过了,但找不到任何明确的解决办法。那么我该如何解决这个问题呢

提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    还可以查看来自bndtools团队的新bnd-maven-pluginhttp://njbartlett.name/2015/03/27/announcing-bnd-maven-plugin.html

    您遇到的问题是,maven jar插件将忽略您的清单,除非您在pom中使用如下内容配置插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <archive>
                <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
            </archive>
        </configuration>
    </plugin>
    
  2. # 2 楼答案

    使用“maven汇编插件”的“mvn包”不是创建OSGi包的正确方法。相反,您应该使用“maven bundle插件”Here there is some documentation关于如何使用它