【问题标题】:Eclipse Neon ignoring eclipse.ini -vmEclipse Neon 忽略 eclipse.ini -vm
【发布时间】:2018-10-22 08:50:58
【问题描述】:

好吧,今天我将 Java 10 添加到我的 Windows 10 机器上,它破坏了 eclipse Neon。我的 Neon 副本不适用于 Java 10,因此我明确要求它在 eclipse.ini 中使用 Java 8。我究竟做错了什么?我难住了。 Neon 一直尝试使用 Java 10 启动,无论我的 -vm 设置如何。

eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk1.8.0_121\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m

Neon 尝试使用 Java 10 启动失败后的日志输出:

!会话 2018-05-11 17:25:40.179 ----------------------------------------------------------- eclipse.buildId =4.6.3.M20170301-0400 java.version=10.0.1 java.vendor=Oracle Corporation BootLoader 常量:OS=win32, ARCH=x86_64, WS=win32, NL=en_US 命令行参数:-os win32 -ws win32 -arch x86_64

!ENTRY org.eclipse.osgi 4 0 2018-05-11 17:25:42.747 !MESSAGE 应用程序错误!堆栈 1 org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: javax/annotation/PostConstruct at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)

这是我在 Eclipse 崩溃时收到的消息。

如果我将 JAVA_HOME 和路径上的 java bin 更改为 Java8 目录,Neon 将运行。所以它似乎是通过 ini 文件读取 env vars,这似乎倒退了我对 eclipse 的 vm 搜索过程的理解。

【问题讨论】:

    标签: java eclipse


    【解决方案1】:

    --launcher.appendVmargs 行上移两行,在-vm 上方。

    Eclipse Wiki: Eclipse.ini - Specifying the JVM:

    -vm 选项必须出现在 其他 Eclipse 特定选项之后 (例如-product--launcher.* 等),但之前 -vmargs 选项, 因为-vmargs 之后的所有内容都直接传递给JVM。

    【讨论】:

    • 谢谢,但遗憾的是,这实际上是我设置 .ini 文件的方式。我将 -vm 选项向上移动,并移动到其他位置,试图获得幸运并做出改变。我将在问题中更新我的 .ini 文件以反映当前状态。
    • 我明白了。奇怪的。如果您通过eclipse.exe -vm "C:\Program Files\Java\jdk1.8.0_121\bin\javaw.exe" 从命令行运行Eclipse,它是否有效?如果您在 Eclipse 安装目录中创建子目录 jre,将所有内容从 C:\Program Files\Java\jdk1.8.0_121 复制到这个新创建的目录并在 eclipse.ini 中删除 -vm 和以下行,它是否有效? "C:\Program Files\Java\jdk1.8.0_121\bin\java.exe" -version 的输出是什么?
    • 它通过eclipse.exe -vm "C:\Program Files\Java\jdk1.8.0_121\bin\javaw.exe"从命令行正常启动。输出:C:\Windows\system32>"C:\Program Files\Java\jdk1.8.0_121\bin\java.exe" -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
    • 它不会在安装目录中使用 jre 中的 8 jdk 启动。尝试使用 java 10 产生相同的错误消息。但是,如果我只将 8 jre 目录复制到我的 eclipse 安装目录中,它将启动。确实很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2010-10-28
    相关资源
    最近更新 更多