Websockets Bundle 依赖于 sun.misc

Websockets Bundle Dependency on sun.misc

我正在尝试使用 Grizzly Websockets 捆绑包创建基于 Websockets 的应用程序。我正在使用 Bndtools 在 Apache Felix 中执行此操作。

不幸的是,我似乎拥有所有需要的依赖项,但由于以下故障,Grizzly 包无法加载:

org.glassfish.grizzly.websockets-server-2.3.23Unable to resolve 
org.glassfish.grizzly.websockets-server [23](R 23.0): missing 
requirement [org.glassfish.grizzly.websockets-server [23](R 23.0)] 
osgi.wiring.package; (osgi.wiring.package=sun.misc) Unresolved 
requirements: [[org.glassfish.grizzly.websockets-server [23](R 23.0)] 
osgi.wiring.package; (osgi.wiring.package=sun.misc)]

我研究了这个失败,最初是在寻找一个包,结果发现显然这是某种真正不需要的 JVM 库。我已经看到涉及向 conf/config.properties 文件添加一行的解决方法和解决方案:

org.osgi.framework.system.packages.extra=sun.misc

我知道这是一个危险的解决方法,并且有传言说 "safer" 可以解决这个问题。它们都涉及更改标签或 config.properties 文件。

不幸的是,在 Bndtools 环境中,显然没有这样的标签或文件可供我编辑!

或者,至少,我在我的 Bndtools 项目中找不到这些东西。

有什么方法可以解决基于 Bndtools 的项目中的这个 "sun.misc" 问题吗?我正在使用 Bndtools 存储库,我想知道我需要编辑哪些 "bnd" 文件,以及要在这些文件中放入什么。

有人请指教...

您需要将 -runsystempackages: sun.misc 添加到 bnd/bndrun 文件。

最好的工具是 https://github.com/diffplug/osgiX

您只需在 gradle.properties 和 运行 gradlew 构建中更改 PKG=sun.misc(或其他包)。

它将生成包片段,您可以将其添加到您的 class 路径中。 然后捆绑包包含:

Manifest-Version: 1.0
Export-Package: sun.misc
Fragment-Host: system.bundle; extension:=framework
Bundle-ManifestVersion: 2
Bundle-License: public domain - http://unlicense.org/
Bundle-SymbolicName: com.diffplug.osgi.extension.sun.misc
Bundle-Version: 0.0.0