【问题标题】:maven bundle plugin build errormaven bundle插件构建错误
【发布时间】:2015-09-09 08:58:14
【问题描述】:

当我运行mvn clean install 时,maven 抛出以下异常:

导出不在 Bundle-Classpath[Jar:dot] 上的包

前几天可以编译成功,为什么会这样?

【问题讨论】:

  • 自从回答这个问题后,我看到原始问题here 包含更多信息。最好不要两次问同一个问题,其中包含的信息量完全不同!

标签: apache-flex osgi


【解决方案1】:

如果没有 POM 配置的详细信息,很难确定,但看起来您正在使用基于 bnd 的插件,这可能意味着 maven-bundle-pluginbnd-maven-plugin

在任何一种情况下,正在生成的包都在导出一个不在包中的包。这是破坏应用程序的可靠方法,因此 bnd 无法创建包。

猜测(因为我没有太多信息可以继续)发生了以下情况之一:

  • 有人重命名了你的包中的一个包,但没有更新 pom 文件中的导出
  • 有人从您的 pom 中删除了一个依赖项,该依赖项以前作为静态链接依赖项被拉入您的包中
  • 有人重构了您正在使用的 SNAPSHOT,但它不再包含您要导出的包
  • 有人将 jar 文件嵌入到您的包中,但未将其添加到包类路径中。
  • 也有可能(但不太可能)有人将您的类配置为不进入捆绑包存档的根目录,因此类与. 无关。

修复前三个问题很容易,要么修复包名,要么重新添加正确的依赖项,要么删除导出。最后两个也很容易修复。你可以像这样改变你的包类路径:

Bundle-ClassPath: /path/to/my.jar, /path/to/another.jar, /path/to/folder

另一个可能更好的选择是不将代码包含在嵌套的 JAR 文件中,而是将代码直接嵌入到您的包中。这意味着调整您的插件配置以使用嵌入语法。因为我不知道你用的是什么插件,所以我不能给你一个例子,但是 bnd 的包含资源的文档是 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2022-05-11
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多