eclipse - 如何通过 Eclipse 插件使用 Java 11 (Java 10)?

标签 eclipse eclipse-plugin java-10

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

enter image description here

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

enter image description here

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

=>这是 eclipse 春分时的错误吗?

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

enter image description here

如果我从最低执行环境设置中删除 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

当我从更新页面安装该插件后尝试使用该插件时,出现 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

如果我使用 Java8 一切正常。

相关问题:

最佳答案

看起来 Eclipse OSGi 还不支持 Java SE 10。我下载了最新的Eclipse Oxygen 4.7.3a并打开plugins/org.eclipse.osgi_3.12.100.v20180210-1608.jar。最后支持的配置文件是 JavaSE-9。

所以,你有两个选择:

  • 等待 OSGi 正式支持 JavaSE-10 配置文件。
  • 如果您确实想使用 Java 10 编写插件并且可以控制插件文件夹(例如您开发 Eclipse RCP 应用程序),请打开 OSGI jar 并添加新的配置文件 JavaSE-10。为此,您可以将 JavaSE-9.profile 复制到 JavaSE-10.profile 并修复新文件中的相应行。另外,您必须向 profile.list 添加新行。

关于eclipse - 如何通过 Eclipse 插件使用 Java 11 (Java 10)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019579/

相关文章:

eclipse - Eclipse Juno 中不支持 GlassFish 服务器吗?

editor - 如何禁用插入符闪烁?

eclipse - 为什么我收到警告 : "build.properties does not exist"

java - 无法使用 Maven 编译简单的 Java 10/Java 11 项目

java - Java 10 中的 "var"到底是什么类型的 token ?

java - 无法捕获且不会停止程序的错误

eclipse - 使用最新的 Mockito 需要哪些 jar?

java - 如何从另一个 java Activity 中播放声音?

java - 如何在 ScrolledForm 中禁用滚动条?

java - 在 Gradle 中启用 HTML5 Javadoc