使用Java 9将Eclipse安装到Ubuntu时出现问题

我有Xubuntu 17.10。 我尝试通过apt-get安装Eclipse。 当我试图运行它时,我收到了一个错误

An error has occurred. See the log file /home/jaakko/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1510564798671.log. 

日志文件如下:

 !SESSION 2017-11-13 11:19:57.077 ----------------------------------------------- eclipse.buildId=debbuild java.version=9.0.1 java.vendor=Oracle Corporation BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US Command-line arguments: -os linux -ws gtk -arch x86_64 !ENTRY org.eclipse.equinox.simpleconfigurator 4 0 2017-11-13 11:20:00.209 !MESSAGE FrameworkEvent ERROR !STACK 0 org.osgi.framework.BundleException: The bundle "org.eclipse.equinox.simpleconfigurator_1.0.301.dist [1]" could not be resolved. Reason: Missing Constraint: Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,J2SE-1.4 at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolverError(AbstractBundle.java:1332) at org.eclipse.osgi.framework.internal.core.AbstractBundle.getResolutionFailureException(AbstractBundle.java:1316) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:323) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.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) !ENTRY org.eclipse.osgi 4 0 2017-11-13 11:20:00.222 !MESSAGE Bundle initial@reference:file:plugins/org.eclipse.equinox.simpleconfigurator_1.0.301.dist.jar was not resolved. !ENTRY org.eclipse.osgi 2 0 2017-11-13 11:20:00.256 !MESSAGE One or more bundles are not resolved because the following root constraints are not resolved: !SUBENTRY 1 org.eclipse.osgi 2 0 2017-11-13 11:20:00.256 !MESSAGE Bundle initial@reference:file:plugins/org.eclipse.equinox.simpleconfigurator_1.0.301.dist.jar was not resolved. !SUBENTRY 2 org.eclipse.equinox.simpleconfigurator 2 0 2017-11-13 11:20:00.256 !MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.1))(&(osgi.ee=JavaSE)(version=1.4)))". !ENTRY org.eclipse.osgi 2 0 2017-11-13 11:20:00.268 !MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists: !SUBENTRY 1 org.eclipse.osgi 2 0 2017-11-13 11:20:00.268 !MESSAGE Bundle org.eclipse.equinox.simpleconfigurator_1.0.301.dist [1] was not resolved. !SUBENTRY 2 org.eclipse.equinox.simpleconfigurator 2 0 2017-11-13 11:20:00.268 !MESSAGE Missing required capability Require-Capability: osgi.ee; filter="(|(&(osgi.ee=CDC/Foundation)(version=1.1))(&(osgi.ee=JavaSE)(version=1.4)))". !ENTRY org.eclipse.osgi 4 0 2017-11-13 11:20:00.281 !MESSAGE Application error !STACK 1 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini). at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414) 

我发现如果我使用Java 9会出现这个问题,但如果我使用Java 8则不会。

如何将Eclipse安装到我的计算机上以运行Java 9?

我已经安装了Eclipse Oxygen(最新版本的Eclipse)和openjdk-9-jdk,Eclipse正在使用此版本中的openjdk-9-jdk。 如果要将openjdk-8-jdk保留为新Eclipse Oxygen中使用的默认Java版本,可以打开Eclipse并从Eclipse内部添加openjdk-9-jdk,如下所示。

  1. 选择Window – > Preferences

  2. 在“首选项”窗口右侧的窗格中,单击Java左侧的黑色三角形以展开它。

  3. 双击“ 已安装的JRE”

  4. 单击首选项窗口左侧的“ 添加 ”以添加新的JRE。

  5. 选择Standard VM ,然后单击Next

  6. 在JRE Home:字段中键入/usr/lib/jvm/java-9-openjdk-amd64 (对于32位Eclipse,使用i386而不是amd64)

  7. 在JRE名称:字段中键入java-9-openjdk-amd64 (或者对于32位Eclipse,使用i386而不是amd64)

  8. 单击“ 应用”按钮。

  9. 现在,在步骤3中的已安装JRE中,您可以单击已安装JRE列表中JRE左侧的复选框以将其选为默认值,然后单击应用按钮以在默认的已安装JRE中应用更改。

相同的说明不适用于Ubuntu 16.04中的默认Eclipse版本。


Ubuntu 18.04及更高版本

来自默认Ubuntu存储库的Eclipse snap包非常适合Java编程,因为它与Java开发环境捆绑在一起。 要安装它,请打开终端并输入:

 sudo snap install eclipse --classic 

此命令将安装最新的Photon Release 4.8版Eclipse IDE for Java Developers,该版本于8天前更新。 Eclipse Photon JDT完全支持Java 9:

  • Eclipse的Java编译器(ECJ)实现了所有新的Java 9语言增强function。
  • 更新了支持Java模块的重要function,例如编译器,搜索和许多编辑器function。

注意:为了在18.04及更高版本中向Eclipse添加新的Java版本,例如openjdk-11-jdk,请按照上面步骤1-9中列出的说明进行操作,仅将字符串java-9-openjdk替换为java版本您想要添加到已安装的JRE

  1. 你必须安装openjdk-8-jre

     sudo apt-get install openjdk-8-jre 
  2. 接下来切换到jre-8版本:

     $ sudo update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status * 0 /usr/lib/jvm/java-9-openjdk-amd64/bin/java 1091 auto mode 1 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 2 /usr/lib/jvm/java-9-openjdk-amd64/bin/java 1091 manual mode 
  3. 检查java版本:

     $ java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.17.10.2-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) 
  4. 开始日食