IBM Domino 9.0.1 FP8不会加载需要JavaSE-1.8的插件

时间:2017-06-24 16:15:02

标签: xpages

我正在开发一个在我们的Domino 9.0.1 FP8服务器上使用的OSGi插件。 由于服务器支持Java 8并且我有一些Java 8代码,我添加了:

Bundle-RequiredExecutionEnvironment: JavaSE-1.8
<{1>}中的

但是,当我尝试加载插件时,它仍然处于MANIFEST.MF状态:

INSTALLED

运行诊断程序显示执行环境不可用:

tell http osgi ss com.test.api.plugin
Framework is launched.
id       State       Bundle
19       INSTALLED   com.test.api.plugin_0.1.0.201706241509

为了确定,我仔细检查了Java版本:

tell http osgi diag com.test.api.plugin
initial@osginsf:apps.nsf/0D3C92BFD9106A9DC125814900535ABD/com.test.api.plugin_0.1.0.201706241509.jar [19]
Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.8

所以,一切似乎都井然有序,但插件不会加载。

如果我将所需的执行环境更改为JavaSE-1.6,或者如果我从show jvm JVM: Java Virtual Machine initialized. Java runtime version: pwa6480sr3fp22-20161213_02 (SR3 FP22) JVM version: JRE 1.8.0 Windows 8 amd64-64 Compressed References 20161209_329148 (JIT enabled, AOT enabled) J9VM - R28_20161209_1345_B329148 JIT - tr.r14.java.green_20161207_128946 GC - R28_20161209_1345_B329148_CMPRSS J9CL - 20161209_329148 中删除该行,则插件会加载并正常工作。

我的临时解决方案是从MANIFEST.MF完全删除该行,因为如果将执行环境更改为JavaSE-1.6,Java 8代码将无法编译。

所以我有一个有效的解决方案,但我想知道问题是什么,以及是否有更好的解决方法。

我注意到的另一件事:我通常使用Maven来构建插件,但如果我尝试使用MANIFEST.MF从Eclipse导出插件,我会收到以下错误:

Export > Deployable plug-ins and fragments

切换到JavaSE-1.6甚至可以在这里帮助正确导出插件。

这可能是OSGi版本问题而不是Java问题吗?

我似乎记得在FP9中应该有一个OSGi更新。那么这有可能解决吗?

1 个答案:

答案 0 :(得分:1)

据我所知,其原因确实是你在最后提到的:它是OSGi堆栈。虽然底层运行时是Java 8,但IBM根本没有更新OSGi堆栈(除非我猜测这是必需的),这包括它不知道它在Java 8运行时。假设FP9确实通过OSGi更新到达,那么应该可以清理它。

与此同时,我一直在做同样的事情:从清单中删除行并处理警告(我使用Maven构建来一直生成更新站点,习惯,所以没有碰到第二个错误。)