Eclipse 启动不了 一闪而过

本文详细分析了Eclipse启动过程中出现的NullPointerException错误,并提供了两种解决方法:删除workspace目录下的.metadata文件和特定插件文件,以恢复Eclipse正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题描述】:
    我的WTP版Eclipse,点击Eclipse图标启动,然后进度条进行一会,就一闪而过,消失了。即便你从新解压个新的eclipse也同样也是失败的。

【问题分析】:
    命令行跟踪下启动log,Ctril+R然后cmd到Eclipse的安装目录,接着输入eclipse.exe启动,log如下:
java.lang.NullPointerException
        at org.eclipse.core.internal.runtime.InternalPlatform.getLog(InternalPla
tform.java:354)
        at org.eclipse.core.runtime.Plugin.getLog(Plugin.java:291)
        at org.eclipse.ui.internal.WorkbenchPlugin.log(WorkbenchPlugin.java:830)
        at org.eclipse.ui.statushandlers.StatusManager.logError(StatusManager.java:285)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:200)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:231)
        at org.eclipse.ui.statushandlers.StatusManager$StatusManagerLogListener .logging(StatusManager.java:305)
        at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:160)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:100)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.safeLogged(ExtendedLogReaderService Factory.java:86)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.logPrivileged(ExtendedLogReaderService Factory.java:205)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.log(ExtendedLogReaderService Factory.java:178)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceFactor y.log(ExtendedLogServiceFactor y.java:65)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
        at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logging(PlatformLogWriter.java:43)
        at org.eclipse.core.internal.runtime.RuntimeLog.log(RuntimeLog.java:96)
        at org.eclipse.core.runtime.SafeRunner.handleException(SafeRunner.java:71)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:44)
        at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2555)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
java.lang.NullPointerException
        at org.eclipse.core.internal.runtime.InternalPlatform.getLog(InternalPla
tform.java:354)
        at org.eclipse.core.runtime.Plugin.getLog(Plugin.java:291)
        at org.eclipse.ui.internal.WorkbenchPlugin.log(WorkbenchPlugin.java:830)
        at org.eclipse.ui.statushandlers.StatusManager.logError(StatusManager.java:285)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:200)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:231)
        at org.eclipse.ui.statushandlers.StatusManager$StatusManagerLogListener .logging(StatusManager.java:305)
        at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:160)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:100)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.safeLogged(ExtendedLogReaderService Factory.java:86)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.logPrivileged(ExtendedLogReaderService Factory.java:205)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.log(ExtendedLogReaderService Factory.java:178)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceFactor y.log(ExtendedLogServiceFactor y.java:65)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
        at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logging(PlatformLogWriter.java:43)
        at org.eclipse.core.internal.runtime.RuntimeLog.log(RuntimeLog.java:96)
        at org.eclipse.core.internal.jobs.JobListeners.handleException(JobListeners.java:130)
        at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:98)
        at org.eclipse.core.internal.jobs.JobListeners.done(JobListeners.java:152)
        at org.eclipse.core.internal.jobs.JobManager.endJob(JobManager.java:647)
        at org.eclipse.core.internal.jobs.WorkerPool.endJob(WorkerPool.java:105)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:70)
java.lang.NullPointerException
        at org.eclipse.core.internal.runtime.InternalPlatform.getLog(InternalPlatform.java:354)
        at org.eclipse.core.runtime.Plugin.getLog(Plugin.java:291)
        at org.eclipse.ui.internal.WorkbenchPlugin.log(WorkbenchPlugin.java:830)
        at org.eclipse.ui.statushandlers.StatusManager.logError(StatusManager.java:285)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:200)
        at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:231)
        at org.eclipse.ui.statushandlers.StatusManager$StatusManagerLogListener .logging(StatusManager.java:305)
        at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:160)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:100)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.safeLogged(ExtendedLogReaderService Factory.java:86)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.logPrivileged(ExtendedLogReaderService Factory.java:205)
        at org.eclipse.equinox.log.internal.ExtendedLogReaderService Factory.log(ExtendedLogReaderService Factory.java:178)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceFactor y.log(ExtendedLogServiceFactor y.java:65)
        at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
        at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
        at org.eclipse.core.internal.runtime.PlatformLogWriter.logging(PlatformLogWriter.java:43)
        at org.eclipse.core.internal.runtime.RuntimeLog.log(RuntimeLog.java:96)
        at org.eclipse.core.internal.jobs.JobManager.doShutdown(JobManager.java:606)
        at org.eclipse.core.internal.jobs.JobManager.shutdown(JobManager.java:252)
        at org.eclipse.core.internal.jobs.JobActivator.stop(JobActivator.java:55)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
        at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
        at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
        at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
        at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
        at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
        at sun.reflect.NativeMethodAccessorImpl .invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl .invoke(NativeMethodAccessorImpl .java:57)
        at sun.reflect.DelegatingMethodAccessor Impl.invoke(DelegatingMethodAccessor Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
Job found still running after platform shutdown.   Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.core.internal.refresh.RefreshJob

计算机软件 <wbr>Eclipse <wbr>启动不了 <wbr>一闪而过
      当然聪明的你到 /.metadata/.log文件下也是可以看到错误信息的,摘录如下:
!ENTRY org.eclipse.ui 4 0 2014-11-14 12:20:05.531
!MESSAGE Error occurred during status handling
!STACK 0
java.lang.NullPointerException
at org.eclipse.ui.internal.statushandlers.StatusHandlerRegistry.(StatusHandlerRegistry.java:61)
at org.eclipse.ui.internal.statushandlers.StatusHandlerRegistry.getDefault(StatusHandlerRegistry.java:91)
at org.eclipse.ui.statushandlers.StatusManager.getStatusHandler(StatusManager.java:135)
at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:189)
at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:231)
at org.eclipse.ui.statushandlers.StatusManager$StatusManagerLogListener.logging(StatusManager.java:305)
at org.eclipse.core.internal.runtime.RuntimeLog.logToListeners(RuntimeLog.java:160)
at org.eclipse.core.internal.runtime.PlatformLogWriter.logged(PlatformLogWriter.java:100)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.safeLogged(ExtendedLogReaderServiceFactory.java:86)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:205)
at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:178)
at org.eclipse.equinox.log.internal.ExtendedLogServiceFactory.log(ExtendedLogServiceFactory.java:65)
at org.eclipse.equinox.log.internal.ExtendedLogServiceImpl.log(ExtendedLogServiceImpl.java:87)
at org.eclipse.equinox.log.internal.LoggerImpl.log(LoggerImpl.java:54)
at org.eclipse.core.internal.runtime.PlatformLogWriter.logging(PlatformLogWriter.java:43)
at org.eclipse.core.internal.runtime.RuntimeLog.log(RuntimeLog.java:96)
at org.eclipse.core.internal.jobs.JobManager.doShutdown(JobManager.java:606)
at org.eclipse.core.internal.jobs.JobManager.shutdown(JobManager.java:252)
at org.eclipse.core.internal.jobs.JobActivator.stop(JobActivator.java:55)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
!SESSION 2014-11-14 12:20:20.546 -----------------------------------------------
eclipse.buildId=4.3.2.M20140221-1700
java.version=1.7.0_17
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.core.resources 2 10035 2014-11-14 12:20:21.937
!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.

!ENTRY org.eclipse.core.jobs 2 2 2014-11-14 12:20:24.703
!MESSAGE Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.ui.internal.Workbench$55


【问题解决】:
    log分析下应该是可以看出端倪,就是进程没被kill干净,导致平台数据状态不一致。
    方法一:
        删除,workspace目录下的.metadata,有后遗症的,有些eclipse插件会出现问题。(不推荐)
    方法二:
删除, workspace目录下的
/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
        假如还不行,顺便把这个 /.metadata/.plugins/org.eclipse.core.resourses/.snap也删掉。


### 防止Java控制台应用程序运行后命令提示符窗口自动关闭的方法 为了防止Java控制台应用程序运行后命令提示符窗口立即关闭,在编写代码时可以加入等待用户输入的部分,这样可以让程序暂停直到用户按下某个键再退出。下面是一个简单的实现方式: ```java import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); Scanner scanner = new Scanner(System.in); System.out.println("Press Enter key to exit..."); try { scanner.nextLine(); } finally { scanner.close(); } } } ``` 这段代码通过引入`Scanner`类来读取用户的键盘输入[^1]。 另外一种方法是在启动Java应用的时候附加参数或者修改批处理文件(.bat),使得程序结束后不会立刻关闭窗口。例如可以在批处理脚本中添加`pause`指令,这会让DOS框显示“请按任意键继续…”的信息并等待按键操作后再关闭。 #### 使用批处理文件保持窗口开启 创建一个新的文本文件并将下列内容复制进去保存为`.bat`扩展名的文件,比如`run_java_program.bat`: ```batchfile @echo off cd /d %~dp0 java HelloWorld pause ``` 此批处理文件会先改变当前工作目录至批处理文件所在位置(`%~dp0`),接着调用`java HelloWorld`执行Java程序,最后使用`pause`使窗口停留在屏幕上直至有进一步的操作[^3]。 #### 修改IDE设置(如果适用) 对于某些集成开发环境(IDEs), 如Eclipse或IntelliJ IDEA,也可以调整其内部配置选项以阻止控制台在完成任务之后迅速消失。通常这类设定位于项目的运行/调试配置里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值