我使用 Eclipse Luna win32.x86_64 运行 Java 8。
这里来自 Help Menu > About > Installation Detail > Configuration Tab
:
java.runtime.version=1.8.0_05-b13
java.version=1.8.0_05
我创建了新的插件项目,请求
JavaSE-1.8
作为执行环境:在
myplugin/META-INF/MANIFEST.MF
我当然有文件: Bundle-RequiredExecutionEnvironment: JavaSE-1.8
我在产品文件中使用这个插件。当我尝试验证它时,出现以下错误:
当然,如果我启动产品,我会得到:
!ENTRY org.eclipse.osgi 2 0 2014-07-10 08:14:22.042
!MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!SUBENTRY 1 org.eclipse.osgi 2 0 2014-07-10 08:14:22.043
!MESSAGE Bundle update@********/myplugin/ was not resolved.
!SUBENTRY 2 myplugin 2 0 2014-07-10 08:14:22.044
!MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(&(osgi.ee=JavaSE)(version=1.8))".
我试图验证很多:
首选项 > Java > 已安装的 JRE
首选项 > Java > 已安装的 JRE > 执行环境
首选项 > Java > 编译器:JDK 合规编译器合规级别
当我启动产品时,我在 Launching 选项卡中检查了我使用 jre8 作为执行环境。
我什至试图改变
Java Runtime Environment
在 Run Configurations
对话:我尝试了不同的设置。它们都不起作用。
怎么了?
这是一个已知问题吗?
最佳答案
该错误意味着您的捆绑包具有 Require-Capability: osgi.ee; filter="(&(osgi.ee=JavaSE)(version=1.8))"
其 list 中的条目。因此,这意味着仅当有提供此功能的捆绑包时,捆绑包才会启动。
对于 osgi.ee 功能,OSGi 框架 (equinox) 应该提供此功能。显然它不会这样做。
因此,一种方法是从捆绑 list 中删除 header 。
另一种是使春分输出能力。也许您可以简单地尝试使用最新的 equinox 版本。不确定这是否有帮助。
您还可以尝试设置框架属性(使用 -D):
org.osgi.framework.system.capabilities=osgi.ee; osgi.ee="JavaSE";version:List="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8"
看
关于eclipse - Java 8 & 缺少所需的能力 Require-Capability : osgi. ee;过滤器 ="(&(osgi.ee=JavaSE)(version=1.8))",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669940/