安装Vue.js CodeMix后Eclipse无法启动,报错需查看.metadata\.log文件
解决CodeMix安装后Eclipse启动报错的方案
我之前也踩过CodeMix和Eclipse Neon版本兼容的坑,看你提供的日志,核心问题是com.genuitec.eclipse.code.core这个插件bundle在启动时抛出了激活异常,之前你试过的删除.metadata、管理员运行都没解决,那可以试试下面几个更针对性的方案:
彻底清理CodeMix残留并重装兼容版本
关闭Eclipse后,做以下操作:- 找到Eclipse安装目录下的
dropins文件夹,删除所有带有codemix或genuitec标识的文件夹/文件; - 进入用户目录(比如
C:\Users\你的用户名)下的.eclipse文件夹,找到对应你当前Eclipse版本(4.6.3)的子目录,删除其中CodeMix相关的缓存文件夹; - 重新启动Eclipse,安装适配Eclipse Neon(4.6.x)版本的CodeMix插件,避免安装最新版(最新版可能不再支持老版本Eclipse)。
- 找到Eclipse安装目录下的
升级JDK版本并配置到Eclipse
你的日志显示使用的是JDK 1.8.0_101,这个版本过于陈旧,CodeMix对JDK 8的更新版本兼容性更好:- 下载并安装JDK 8u200及以上版本(或尝试JDK 11,Eclipse Neon对JDK 11有基础支持);
- 修改Eclipse安装目录下的
eclipse.ini文件,在-vmargs行之前添加JDK路径配置(注意路径要换成你自己的JDK安装路径):-vm C:\Program Files\Java\jdk1.8.0_291\bin\javaw.exe - 保存后重启Eclipse。
使用-clean参数强制清理插件缓存
右键点击Eclipse快捷方式,选择「属性」,在「目标」栏的现有路径末尾添加-clean(注意前面有空格),比如:D:\eclipse\eclipse.exe -clean -product org.eclipse.epp.package.php.product启动一次Eclipse后,再去掉
-clean参数正常启动,这个操作会强制Eclipse重新初始化插件状态,清理可能损坏的缓存。通过OSGi控制台诊断依赖问题
如果以上方法都无效,可以尝试用Eclipse的OSGi控制台排查具体依赖缺失:- 启动Eclipse时添加
-console参数,打开控制台后输入ss com.genuitec,查看所有Genuitec相关bundle的状态; - 找到状态为
INSTALLED或RESOLVED的bundle,输入start 你的bundle-id尝试手动启动,控制台会输出具体的依赖报错,根据提示补充缺失的插件或修复依赖。
- 启动Eclipse时添加
你提供的报错日志:
!SESSION 2018-05-31 12:13:30.531 ----------------------------------------------- eclipse.buildId=4.6.3.M20170301-0400 java.version=1.8.0_101 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Framework arguments: -product org.eclipse.epp.package.php.product Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.php.product !ENTRY org.eclipse.equinox.ds 2 0 2018-05-31 12:13:34.098 !MESSAGE InstanceProcess.disposeInstances(): registration for component com.genuitec.eclipse.code.core.quickopeneventbu is already disposed! !ENTRY org.eclipse.osgi 4 0 2018-05-31 12:13:34.154 !MESSAGE An error occurred while automatically activating bundle com.genuitec.eclipse.code.core (9). !STACK 0 org.osgi.framework.BundleException: Exception in com.genuitec.eclipse.code.core.CodeCore.start() of bundle com.genuitec.eclipse.code.core. at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:795) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:724) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309) at org.eclipse.osgi.container.Module.doStart(Module.java:581) at org.eclipse.osgi.container.Module.start(Module.java:449) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:529) at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) at java.lang.ClassLoader.loadClass(Unknown Source) at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2391) at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2156) at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:464) at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:774) at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:767) at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:724) at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932) at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309) at org.eclipse.osgi.container.Module.doStart(Module.java:581) at org.eclipse.osgi.container.Module.start(Module.java:449) at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:529) at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345) at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:419) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) at java.lang.ClassLoader.loadClass(Unknown Source) at org.eclipse
内容的提问来源于stack exchange,提问作者Pure Rhymer Organization




