【发布时间】:2022-08-24 18:45:51
【问题描述】:
我有包含许多使用 OSGI 捆绑包的模块的整体代码,我需要从 jdk8 升级到 jdk11,在部署中我收到了很多与相关的错误和警告 OSGI 和 apache.felix:比如:
OSGI cant resolved dependency with version: xxx and warning like:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender (file:/full-test/framework/org.apache.felix.framework-5.6.10.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
所以我将 felix.framework 更新到 7+ 版本,将 OSGI 更新到最新版本 1.4.0。 现在我在将图像部署到 docker 时遇到了这个错误:
org.osgi.framework.BundleException: Imported package names cannot be zero length.
ngwi | at org.apache.felix.framework.util.manifestparser.ManifestParser.normalizeImportClauses(ManifestParser.java:361)
ngwi | at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:186)
ngwi | at org.apache.felix.framework.BundleRevisionImpl.<init>(BundleRevisionImpl.java:117)
ngwi | at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1290)
ngwi | at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:114)
ngwi | at org.apache.felix.framework.Felix.installBundle(Felix.java:3287)
ngwi | at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:147)
ngwi | at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:120)
ngwi | at com.intuit.cto.wi.rest.osgi.listener.ProvisionActivator.start(ProvisionActivator.java:35)
ngwi | at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849)
ngwi | at org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:5173)
ngwi | at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849)
ngwi | at org.apache.felix.framework.Felix.init(Felix.java:899)
ngwi | at org.apache.felix.framework.Felix.init(Felix.java:648)
ngwi | at com.intuit.cto.wi.rest.osgi.ApacheFelix.start(ApacheFelix.java:56)
ngwi | at com.intuit.cto.wi.rest.osgi.listener.FrameworkService.doStart(FrameworkService.java:63)
ngwi | at com.intuit.cto.wi.rest.osgi.listener.FrameworkService.start(FrameworkService.java:41)
ngwi | at com.intuit.cto.wi.rest.osgi.listener.StartupListener.contextInitialized(StartupListener.java:24)
ngwi | at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4763)
ngwi | at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
ngwi | at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
ngwi | at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
ngwi | at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
ngwi | at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
ngwi | at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1016)
ngwi | at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903)
ngwi | at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
ngwi | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
ngwi | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
ngwi | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
ngwi | at java.base/java.lang.Thread.run(Thread.java:829)
以及未解决的捆绑包。 如何解决这些问题?
-
一些建议:1)使用markdown来显示代码,原来是不可读的。 2)告诉你的开发环境是什么。任何建议都将在很大程度上取决于此。 3)试着听起来更积极一点:-)
-
嗨彼得,谢谢你的建议:)。关于第 2 点,您所说的开发环境是什么意思?
-
您可以使用 bndtools、gradle 或 maven ...在可以提供建议之前了解这一点非常重要,因为您需要工具
标签: java maven osgi java-11 apache-felix