Eclipse挂在加载工作台上


95

我的日食停止加载工作台。我已经尝试从./eclipse --clean开始

从控制台启动时,它将引发以下异常:

java.lang.NullPointerException
    at org.eclipse.core.internal.runtime.Log.isLoggable(Log.java:101)
    at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.safeIsLoggable(ExtendedLogReaderServiceFactory.java:57)
    at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.logPrivileged(ExtendedLogReaderServiceFactory.java:158)
    at org.eclipse.equinox.log.internal.ExtendedLogReaderServiceFactory.log(ExtendedLogReaderServiceFactory.java:146)
    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.Log.log(Log.java:60)
    at org.tigris.subversion.clientadapter.javahl.Activator.isAvailable(Activator.java:92)
    at org.tigris.subversion.clientadapter.Activator.getAnyClientAdapter(Activator.java:81)
    at org.tigris.subversion.subclipse.core.SVNClientManager.getAdapter(SVNClientManager.java:145)
    at org.tigris.subversion.subclipse.core.SVNClientManager.getSVNClient(SVNClientManager.java:92)
    at org.tigris.subversion.subclipse.core.SVNProviderPlugin.getSVNClient(SVNProviderPlugin.java:425)
    at org.tigris.subversion.subclipse.core.status.NonRecursiveStatusUpdateStrategy.statusesToUpdate(NonRecursiveStatusUpdateStrategy.java:53)
    at org.tigris.subversion.subclipse.core.status.StatusCacheManager.refreshStatus(StatusCacheManager.java:273)
    at org.tigris.subversion.subclipse.core.resourcesListeners.FileModificationManager.refreshStatus(FileModificationManager.java:179)
    at org.tigris.subversion.subclipse.core.resourcesListeners.FileModificationManager.resourceChanged(FileModificationManager.java:128)
    at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:291)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
    at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149)
    at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:395)
    at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1530)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:45)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

加载com.android.ide.eclipse.adt时停止

我的工作台怎么了?

Eclipse启动屏幕


1
看起来(单连字符)似乎没有任何效果(在我的情况下使用Eclipse Neon),实际上--clean什么也没做-clean
Christopher Schultz

Answers:


146

DISCLAIMER: THIS WILL DELETE ALL OF YOUR ECLIPSE WORKSPACE SETTINGS AND YOU WILL HAVE TO RE-IMPORT ALL YOUR PROJECTS, THERE ARE LESS DESTRUCTIVE ANSWERS HERE

请尝试以下操作:

  1. 删除本地工作区中.metadata文件夹(这对我有用)。似乎它包含一个.LOCK文件,如果未正确关闭该文件,则会阻止Eclipse正常启动。在基于Unix的系统上,您可以在命令行中键入以下命令;

    rm -r workspace/.metadata
    
  2. 删除您的目录中的.eclipse目录。启动Eclipse。如果那不起作用,

  3. 在另一个用户帐户下打开eclipse。如果加载成功,则说明问题出在您的帐户,而不是Eclipse安装。


我错误地单击文件->重新启动后,这发生在我身上。
nurnachman 2012年

68
在大多数情况下,rm workspace/.metadata/.lock对我有用。确保使用./eclipse -clean -refresh任何尝试开始蚀。感谢您教给我们mv .eclipse .eclipse.old,今天无济于事。今天它有助于删除workspace/.metadata/.plugins/。此后,所有插件实际上都可以工作。一些设置消失了。然后,您可以用于Import...一次导入所有现有项目。删除workspace/.metadata是最后的选择,但可以。workspace/.metadata/.mylyn如果您不想放弃任务,则可以保留。
sulai 2012年

非常感谢!当Eclipse突然停止响应时,为我节省了很多精力。Stackoverflow如此艰难,社区也是如此!
HungryForKnowledge

3
只需删除.lock文件-无需删除所有设置!
老虎机

7
删除.lock并没有帮助我,但删除.metadata/.plugins/org.eclipse.core.resources/.snap
serge

92

http://off-topic.biz/zh/eclipse-hangs-at-startup-showing-only-the-splash-screen/中显示的过程 对我有用

  1. cd .metadata / .plugins
  2. mv org.eclipse.core.resources org.eclipse.core.resources.bak
  3. 开始蚀。(由于未找到项目,它应该显示错误消息或空的工作空间。)
  4. 关闭所有打开的编辑器选项卡。
  5. 退出日食。
  6. rm -rf org.eclipse.core.resources(删除新创建的目录。)
  7. mv org.eclipse.core.resources.bak / org.eclipse.core.resources(还原原始目录。)
  8. 开始蚀并开始工作。:-)

在其他答案中:

eclipse -clean -clearPersistedState

被提及-似乎具有相同甚至更好的效果。

这是MacOS(使用Macports)和Linux(在Eclipse Equinox的Ubuntu上测试)的脚本,以可选的方式终止运行的Eclipse。您可能想要使脚本适应您的需求。如果您添加新平台,请在此答案中直接编辑脚本。

#!/bin/bash
# WF 2014-03-14
#
# ceclipse:
#   start Eclipse cleanly
#
#   this script calls eclipse with -clean and -clearPersistedState
#   if an instance of eclipse is already running the user is asked
#   if it should be killed first and if answered yes the process will be killed
#
# usage: ceclipse
#

#
# error
#
#   show an error message and exit
#
#   params:
#     1: l_msg - the message to display
error() {
  local l_msg="$1"
  echo "error: $l_msg" 1>&2
  exit 1 
}

#
# autoinstall
#
#  check that l_prog is available by calling which
#  if not available install from given package depending on Operating system
#
#  params: 
#    1: l_prog: The program that shall be checked
#    2: l_linuxpackage: The apt-package to install from
#    3: l_macospackage: The MacPorts package to install from
#
autoinstall() {
  local l_prog=$1
  local l_linuxpackage=$2
  local l_macospackage=$3
  echo "checking that $l_prog  is installed on os $os ..."
  which $l_prog 
  if [ $? -eq 1 ]
  then
    case $os in 
      # Mac OS
      Darwin) 
        echo "installing $l_prog from MacPorts package $l_macospackage"        
        sudo port install $l_macospackage
      ;;
      # e.g. Ubuntu/Fedora/Debian/Suse
      Linux)
        echo "installing $l_prog from apt-package $l_linuxpackage"        
        sudo apt-get install $l_linuxpackage
      ;;
      # git bash (Windows)
      MINGW32_NT-6.1)
        error "$l_prog ist not installed"
      ;;
      *)
        error "unknown operating system $os" 
    esac
  fi
}

# global operating system variable
os=`uname`

# first set 
#  eclipse_proc - the name of the eclipse process to look for
#  eclipse_app - the name of the eclipse application to start
case $os in 
    # Mac OS
    Darwin) 
      eclipse_proc="Eclipse.app" 
      eclipse_app="/Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse"
      ;;
    # e.g. Ubuntu/Fedora/Debian/Suse
    Linux)
      eclipse_proc="/usr/lib/eclipse//plugins/org.eclipse.equinox.launcher_1.2.0.dist.jar"
      eclipse_app=`which eclipse`
      ;;
    # git bash (Windows)
    MINGW32_NT-6.1)
      eclipse_app=`which eclipse`
      error "$os not implemented yet"
      ;;
    *)
      error "unknown operating system $os" 
esac

# check that pgrep is installed or install it
autoinstall pgrep procps

# check whether eclipse process is running
# first check that we only find one process
echo "looking for $eclipse_proc process"
pgrep -fl "$eclipse_proc"
# can't use -c option on MacOS - use platform independent approach 
#eclipse_count=`pgrep -cfl "$eclipse_proc"`
eclipse_count=`pgrep -fl "$eclipse_proc" | wc -l | tr -d ' '`

# check how many processes matched
case $eclipse_count in
  # no eclipse - do nothing
  0) ;;
  # exactly one - offer to kill it
  1) 
     echo "Eclipse is running - shall i kill and restart it with -clean? y/n?"
       read answer
       case $answer in
         y|Y) ;;
           *) error "aborted ..." ;;
       esac
     echo "killing current $eclipse_proc"
     pkill -f "$eclipse_proc"
     ;;
  # multiple - this is bogus
  *) error "$eclipse_count processes matching $eclipse_proc found - please adapt $0";;
esac

tmp=/tmp/eclipse$$
echo "starting eclipse cleanly ... using $tmp for nohup.out"
mkdir -p $tmp
cd $tmp

# start eclipse with clean options
nohup $eclipse_app -clean -clearPersistedState&

1
谢谢!与删除整个.metadata文件夹相比,这是一种更好的方法。它工作得很好
Jakob

1
好多了。在Mac OS X Mavericks上的Kepler上提供了帮助
RobertSösemann2014年

5
这个“ eclipse -clean -clearPersistedState”帮助了我,谢谢!
Michal 2014年

2
-clean -clearPersistedState为我在Aptana Studio 3中赢得了胜利7
Lorenz Haase

2
eclipse -clean -clearPersistedState在开普勒(Kepler)赢得胜利7
Yitzchak

37
./eclipse -clean -refresh

如sulai 12年12月20日12:46的评论中所提到的,对我有用。

但是,在Mac OS X上,我不得不弄清楚如何进入./eclipse

解决方法如下:

cd Eclipse.app/Contents/MacOS/

谢谢安德鲁对这篇文章的评论:https : //stackoverflow.com/a/1783448/2162226


2
我必须先使用-clean -refresh打开一个新的工作区(我将其命名为test)。当Eclipse(在我的例子中是GGTS)打开时,我选择了File(文件)> Switch Workspace(切换工作区),然后回到最初引起冻结问题的工作区。
pm_labs 2014年

在Eclipse Luna上,应用程序实际上只是文件,而无需CD进入文件夹。只是运行./eclipse -clean -refresh固定对我来说
警报器

20

我发现最好的解决方案是删除此文件:workspace / .metadata / .plugins / org.eclipse.e4.workbench / workbench


2
在日食中靛蓝。尝试rm工作空间/.metadata/.plugins/org.eclipse.ui.workbench/
Gere

1
这清除了这个问题对我来说与TIBCO BusinessWorks设计工作室在Windows 7
亚历Beynenson

在我的MacBook Pro 12" ,该解决方案为我最好的
ironmantis7x

12

无需删除整个元数据。只需尝试删除工作区文件夹ex中org.eclipse.core.resources下的.snap文件。

workspaceFolder.metadata.plugins \ org.eclipse.core.resources


几乎每次Eclipse挂起时,删除这个文件对我来说都是有用的。谢谢!
约瑟夫

删除.snap文件对我来说对Eclipse Mars-4.5.1(在Mac El Capitan上)有效
哈希码

与我合作过JBoss Developer Studio 10
Thomas

11

我解决了从工作区目录(和所有子目录)中删除* .snap的问题:

元数据\ .plugins \ *。snap


1
这使我免于丢失所有设置!
tprk77

8

相当老的问题,但最简单的答案尚未发布。
这是:
1)[workspace]\.metadata\.plugins\org.eclipse.e4.workbench 删除 workbench.xmi文件中。
在大多数情况下,这就足够了-尝试加载Eclipse。
仍然需要重新配置您的特定透视图设置(如果有)

2)现在在建立完美运作的项目时遇到问题了吗?以我的经验,以下步骤将帮助您:
-取消选中“ 项目”->“自动构建”
-切换到Java透视图(如果尚未安装):窗口->“打开透视图”->“ Java”
-“定位问题”视图或打开它:“ 窗口”->“显示视图”->“问题”
-右键单击问题组,然后选择删除。确保删除Lint错误
-清理工作区:项目->清理...,带有选项清理所有项目
-检查项目 - >自动生成
-如果某些项目仍然存在问题:右键单击项目,选择属性-> Android并确保选择了适当的项目构建目标

3)对我来说总是足够的。但是,如果您仍然遇到问题-请尝试@george发表建议


谢谢!除了删除workbench.xmi之外,什么都没做
只是Craig

6

以下步骤适用于我的MacOS(Mavericks)和Eclipse Luna 4.4.1:

删除路径“ workspaceFolder”下的.snap文件。metadata.plugins\ org.eclipse.core.resources \

如果您不知道如何在Mac上导航到该文件夹​​,请按Cmd + Shift + G(转到该文件夹​​),然后键入要导航的完整地址。




2

您必须删除在您的工作区文件夹中找到的metas.plugins \内的org.eclipse.e4.workbench文件夹。删除此文件夹可以为我解决问题,希望它对其他人有所帮助!



0

这种行为有许多可能的原因。除了从shell提示符处运行外,还值得在工作区日志文件中找到线索,该文件是工作区目录下的.metadata / .log文件-即将出现的NPE看起来可能必须与日志代码本身有关,但是日志可能仍然有助于确定错误发生之前的状况。

在网络上搜索找到的消息时,通常会建议您删除各种目录或文件,然后重新开始。不过,有时候我可以删除.metadata / .plugins / org.eclipse.ui.workbench / workbench.xml的某些部分,以减少破坏性的解决方案。


0

删除.metadata目录中的文件的麻烦在于,您将不得不从头开始工作台。因此,可能需要一段时间才能还原所有项目,特别是如果您有许多项目的话。仅通过将现有文件替换为旧的备份文件就可以从备份中还原.metadata了。


0

尝试使用较新的Eclipse版本尝试加载和保存工作区也可能会有所帮助:

我正在使用Eclipse 3.8。启动时,启动屏幕将挂起。日志中没有错误消息。帮助使用Eclipse 4.2.2打开工作区。打开和关闭工作区后,我可以再次用3.8加载它。


0

在对文件日期进行了一些调查之后,我通过简单地删除本地工作区中的以下文件来解决了同一问题(这是开普勒上的一个随机反复出现的问题):.metadata.plugins \ org.eclipse.jdt.core \ variablesAndContainers.dat

对工作区还原的影响可忽略不计。

我希望它可以帮助其他人...


0

在您的工作区中,您将找到隐藏文件夹名称.metadata,在其中您将找到另一个隐藏文件夹“ .mylyn”,将其删除并清空垃圾桶,进入任务管理器,停止Eclipse的过程,然后再次启动Eclipse,这一次它将起作用。

请享用!


0

这是一种对我有用的破坏性较小的方法:

我在Windows机器上,它带有从随机目录运行的Spring Tool Suite(Eclipse的扩展)的副本。在命令行提示符下,我必须导航到包含我的目录STS.exe并运行:STS.exe -refresh

之后,我可以按正常方式(通过固定的任务栏图标)打开Eclipse。


0

获取.metadata / .plugin / org.eclipse.core.resources文件夹的备份副本,然后删除该文件夹并启动eclipse。那应该启动工作空间,但是所有项目都将消失,因为org.eclipse.core.resources保留了所有项目的列表。

接下来,正确关闭eclipse,然后将org.eclipse.core.resources从备份复制回到覆盖现有文件夹的.metadata / .plugins /文件夹。

日食打开,一切正常,所有项目恢复正常。


0

Eclipse在启动时冻结-在加载工作区之前 ,这篇文章的答案很好。重复对我有用的答案

在您的工作空间目录中,执行以下步骤:

cd .metadata / .plugins

mv org.eclipse.core.resources org.eclipse.core.resources.bak

开始蚀。(由于未找到项目,它应该显示错误消息或空的工作空间。)

关闭所有打开的编辑器选项卡。

退出日食。

rm -rf org.eclipse.core.resources(删除新创建的目录。)

mv org.eclipse.core.resources.bak / org.eclipse.core.resources(还原原始目录。)

开始蚀并开始工作。:-)

CharlesB的回答


-1

没有任何解决方案对我的情况有所帮助。

我找到了可行的解决方案。我读到,如果在Eclipse中未正确更新ADT插件,就会发生这种情况。

Solution
From Eclipse. . .
1. Go to Help Tap
2. Click Check for Updates

更新所有内容,哇!在启动Eclipse时不再冻结!


-1

我没有尝试所有这些。我通过笔记本电脑/机器重启。之后一切恢复正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.