首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Eclipse Plugin中使用Java11 (Java10)?

如何在Eclipse Plugin中使用Java11 (Java10)?
EN

Stack Overflow用户
提问于 2018-04-25 18:10:43
回答 3查看 3.1K关注 0票数 8

如果我在Eclipse插件中指定JavaSE-10作为最低执行环境:

当我的插件作为Eclipse应用程序启动时,我得到以下错误:

代码语言:javascript
运行
复制
org.osgi.framework.BundleException: Could not resolve module: org.treez.core [597]
  Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=10))"
  Unresolved requirement: Require-Bundle: org.treez.javafxd3; visibility:="reexport"
    -> Bundle-SymbolicName: org.treez.javafxd3; bundle-version="1.0.0.qualifier"; singleton:="true"
       org.treez.javafxd3 [586]
         Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=10))"

    at org.eclipse.osgi.container.Module.start(Module.java:444)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1613)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

我检查过了

  • Java10在已安装的JRE下受尊重
  • 10被选为法规遵从性级别

我使用Oxygen.3a版本(4.7.3a)构建id: 20180405-1200.

=>Is这是eclipse equinox中的一个bug吗?

=>What否则我可以检查以解决此问题吗?

如果我从最低执行环境设置中删除JavaSE-10,我就能够启动Eclipse应用程序,并且插件似乎工作得很好。

当我导出插件时,我得到以下警告:

代码语言:javascript
运行
复制
# 25.04.18, 12:25:40 MESZ
# Eclipse Compiler for Java(TM) v20180330-0919, 3.13.102, Copyright IBM Corp 2000, 2015. All rights reserved.
option -bootclasspath not supported at compliance level 9 and above

当我从我的更新页面安装完插件后,我尝试使用它,我得到了一个ClassNotFoundException:

代码语言:javascript
运行
复制
...
Caused by: java.lang.ClassNotFoundException: org.treez.views.tree.TreeViewPart cannot be found by org.treez.views_1.0.0.201804191641
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:564)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    ... 114 more

如果我使用Java8,一切都很好。

相关问题:

EN

Stack Overflow用户

发布于 2018-09-29 03:20:28

从Java4.3开始,指定最低OSGi版本的最合适方法是使用Required-Capability标头,如下所示:

要求-功能: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=1.10))“

通过用上面的代码行替换所有出现的Bundle-RequiredExecutionEnvironment,我成功地修复了报告的错误。在PDE中,您可能会收到关于清单文件的警告,但可以安全地忽略它。产品验证和产品出口似乎没有问题。

BREE头的语义要求OSGi实现为每个特定版本提供一个执行环境描述符。在Equinox中,这过去是通过".profile“文件定义的;这些配置文件已经被Equinox支持到JavaSE-9,但已经宣布Equinox他们将不再为更新版本的Java提供配置文件。

Tycho社区已经通过创建他们自己的Java 10配置文件来处理这个问题,但它不能直接从PDE使用。P2社区正在考虑复制Tycho的Java10概要文件,但这已经搁置了很长一段时间。我不确定P2在fed包不包含BREE报头时会有什么反应。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50019579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档