1

目前我有一种情况,我开发了一个项目,然后运行mvn install并将它作为一个简单的 JAR 文件放入我的本地 Maven 存储库

然后,我有一个由其他人制作的“环境”,其中包括很多捆绑包和东西,最终通过mvn pax:run它运行,运行大约需要 5 分钟

我希望能够运行felix:update <bundle-name>,但我无法填补本地 Maven 存储库中的 Maven JAR 工件和我可以放在某个地方运行felix:update或其他任何东西的准备好配置包之间的空白uninstall/install

当我尝试mvn pax:create-bundle使用我的项目运行时,它会引发Containing project does not have packaging type 'pom'异常

非常感谢任何帮助

更新:我注意到重新安装捆绑包的问题始于它的激活器,带有 ClassNotFoundException (尽管提到的类始终存在于捆绑包中,因此它必须与类路径、类加载器设置或其他问题有关)

at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation BundleWiringImpl.java:1574 at org.apache.felix.framework.BundleWiringImpl.access$400 BundleWiringImpl.java:79 at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass BundleWiringImpl.java:2018 at java.lang.ClassLoader.loadClass ClassLoader.java:357 at some.external.adapters.package.guice.SomeModule.configure SomeModule.java:46 at com.google.inject.AbstractModule.configure AbstractModule.java:59

4

2 回答 2

0

如果你有一个新构建的包文件的路径,你可以从 Gogo shell 更新它,如下所示:

felix:update <bundleid> file:/path/to/file
refresh

<bundleid>您要更新的捆绑包的数字 ID在哪里。refresh如果任何包依赖于或从您正在更新的包中导入包,则需要该命令;此命令将导致框架尝试使用新的依赖项重新解析它们。

于 2018-03-29T13:47:39.227 回答
0

我很高兴接受@neil-bartlett 的回答,但我必须添加更多上下文:

1) 我最初遇到的最大问题之一是本地 Maven 存储库中的 JAR 文件与 OSGi 包不同。为了创建捆绑包,我必须运行mvn bundle:bundleAFTER mvn install。捆绑包是在target/文件夹中创建的。

2)之后,在 GoGo shell 中,我确实可以运行felix:update <bundle-id> file:C:/Users/blablabla/bundle-SNAPSHOT-2.0.jar,并且由于某些原因,这些天它可以正常工作。原始帖子更新中提到的异常确实正在发生,但它们不会阻止正确安装更新的捆绑包。

于 2018-04-02T10:02:18.130 回答