如何在Eclipse插件中使用Java11(Java10)?

Ste*_*fan 7 eclipse eclipse-plugin java-10

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

在此输入图像描述

在Eclipse应用程序启动插件时出现以下错误:

在此输入图像描述

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)
Run Code Online (Sandbox Code Playgroud)

我查了一下

  • Java10在已安装的JRE下受到尊重
  • 选择10作为合规级别

我使用Oxygen.3a Release(4.7.3a)Build id:20180405-1200

=>这是eclipse equinox中的一个错误吗?

=>我还可以检查以解决此问题?

在此输入图像描述

如果我从最小执行环境设置中删除JavaSE-10,我就可以启动Eclipse应用程序,并且该插件似乎工作正常.

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

# 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
Run Code Online (Sandbox Code Playgroud)

当我从更新页面安装插件后尝试使用该插件时,我得到一个ClassNotFoundException:

...
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
Run Code Online (Sandbox Code Playgroud)

如果我使用Java8一切正常.

相关问题:

Ste*_*fan 0

对我来说有效的解决方法是

  • 从清单文件中删除所需的版本条目并忽略相应的警告

  • 在导出向导中激活选项“使用工作区中编译的类文件”:

在此输入图像描述

(因此,我假设如果未应用该选项,则在导出向导的编译步骤中会出现问题。)

我使用了 Java 11.0.1 和 Eclipse SimRel 2018-09(加上 Java11 支持插件)