Xpages IBM Domino 9.0.1 FP8赢得';t加载需要JavaSE-1.8的插件
我正在开发一个OSGi插件,用于我们的Domino9.0.1FP8服务器。 由于服务器支持Java 8,并且我有一些Java 8代码,因此我添加了:Xpages IBM Domino 9.0.1 FP8赢得';t加载需要JavaSE-1.8的插件,xpages,Xpages,我正在开发一个OSGi插件,用于我们的Domino9.0.1FP8服务器。 由于服务器支持Java 8,并且我有一些Java 8代码,因此我添加了: Bundle-RequiredExecutionEnvironment: JavaSE-1.8 在MANIFEST.MF中 但是,当我尝试加载插件时,它仍然停留在已安装状态: tell http osgi ss com.test.api.plugin Framework is launched. id State Bund
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
在MANIFEST.MF
中
但是,当我尝试加载插件时,它仍然停留在已安装
状态:
tell http osgi ss com.test.api.plugin
Framework is launched.
id State Bundle
19 INSTALLED com.test.api.plugin_0.1.0.201706241509
运行诊断显示执行环境不可用:
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
为了确定,我仔细检查了Java版本:
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
所以,一切似乎都井然有序,但插件无法加载
如果我将所需的执行环境更改为JavaSE-1.6,或者从MANIFEST.MF
中删除该行,插件将加载并正常工作
我的临时解决方案是从MANIFEST.MF
中完全删除该行,因为如果我将执行环境更改为JavaSE-1.6,Java 8代码将无法编译
所以我有一个有效的解决方案,但我想知道问题是什么,是否有更好的方法来解决它
我注意到的另一件事是:我通常使用Maven构建插件,但是如果我尝试使用export>Deployable plug-ins and fragments
从Eclipse导出插件,我会得到以下错误:
Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Host plug-in JavaSE_0.0.0 has not been found.
切换到JavaSE-1.6甚至在这里也会有所帮助,插件可以正确导出
这可能是OSGi版本问题而不是Java问题吗
我似乎记得FP9中应该有一个OSGi更新。这有可能解决吗?据我所知,原因确实是您在最后提到的:这是OSGi堆栈。尽管底层运行时是Java8,但IBM根本没有更新OSGi堆栈(我想,除了需要的任何东西),这包括它不知道它在Java8运行时。假设FP9真的随OSGi更新而来,那么应该会清理它
与此同时,我一直在做与您相同的事情:从清单中删除该行,然后只处理警告(出于习惯,我一直使用Maven构建来生成更新站点,因此没有遇到第二个错误)。相同的老故事和部分更新,然后:-)不过问题不大。我可以接受MANIFEST.MF中的警告。希望它能在FP9中得到解决。和Jesse一样,我删除了Bundle执行环境,并始终使用更新站点。我认为Java8只是FP8的一部分,OSGi和Notes是FP9。社区中的插件开发人员倾向于将其拆分,因此我们获得了Java8,以便尽快在插件中编译。这不是一个自交货以来我就后悔的决定。