Eclipse 在加载工作台上挂起

Posted

技术标签:

【中文标题】Eclipse 在加载工作台上挂起【英文标题】:Eclipse hangs on loading workbench 【发布时间】:2012-02-16 19:49:41 【问题描述】:

我的 Eclipse 停止加载工作台。我已经尝试过从 ./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 时停止

我的工作台有什么问题?

【问题讨论】:

看起来--clean 什么都不做,而-clean(单个连字符)似乎实际上有效果(在我的例子中使用 Eclipse Neon)。 【参考方案1】:

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

尝试以下方法:

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

    rm -r workspace/.metadata
    

    删除主目录中的 .eclipse 目录。启动日食。如果这不起作用,

    在另一个用户帐户下打开 eclipse。如果它加载,您就知道问题出在您的帐户上,而不是您的 Eclipse 安装。

【讨论】:

我点击文件->错误重启后发生这种情况。 在大多数情况下,rm workspace/.metadata/.lock 适合我。无论您尝试什么,请务必使用./eclipse -clean -refresh 启动eclipse。感谢您教我们mv .eclipse .eclipse.old,今天没有帮助。今天它帮助删除了workspace/.metadata/.plugins/。在那之后,所有插件实际上都起作用了。一些设置不见了。然后,您可以使用Import... 一次导入所有现有项目。删除workspace/.metadata 是最后的选择,但有效。如果您不想丢失任务,可以保留workspace/.metadata/.mylyn 非常感谢!当 Eclipse 突然停止响应时,为我节省了很多精力..*** 摇滚,社区也是如此! 只需删除 .lock 文件 - 无需丢失所有设置! 删除 .lock 对我没有帮助,但删除 .metadata/.plugins/org.eclipse.core.resources/.snap 确实【参考方案2】:

程序显示在 http://off-topic.biz/en/eclipse-hangs-at-startup-showing-only-the-splash-screen/ 为我工作:

    cd .metadata/.plugins mv org.eclipse.core.resources org.eclipse.core.resources.bak 启动 Eclipse。 (它应该显示一条错误消息或一个空的工作区,因为没有找到项目。) 关闭所有打开的编辑器选项卡。 退出 Eclipse。 rm -rf org.eclipse.core.resources(删除新创建的目录。) mv org.eclipse.core.resources.bak/org.eclipse.core.resources(恢复原目录。) 启动 eclipse 并开始工作。 :-)

在其他答案中:

eclipse -clean -clearPersistedState

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

这是一个适用于 MacOS(使用 Macports)和 Linux(在 Ubuntu 上使用 Eclipse 测试)的脚本 Equinox) 以选择终止正在运行的 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&

【讨论】:

谢谢!这是一种比删除整个 .metadata 文件夹更好的方法。它工作得很好 好多了。帮助 Mac OS X Mavericks 上的 Kepler 这个“eclipse -clean -clearPersistedState”帮助了我,谢谢! -clean -clearPersistedState 在赢得 7 的 Aptana Studio 3 中为我工作 eclipse -clean -clearPersistedState 在 Kepler Win 7 中工作【参考方案3】:
./eclipse -clean -refresh

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

但是,在 Mac OS X 上,我必须弄清楚如何访问 ./eclipse

解决办法如下:

cd Eclipse.app/Contents/MacOS/

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

【讨论】:

我必须先使用 -clean -refresh 打开一个新工作区(我将其命名为 test)。当 Eclipse(在我的例子中是 GGTS)打开时,我选择 File > Switch Workspace 并回到最初导致冻结问题的工作区。 在 Eclipse Luna 上,应用程序实际上只是文件,无需 cd 进入文件夹。只是运行./eclipse -clean -refresh 为我修复了它【参考方案4】:

我找到的最佳解决方案是删除这个文件:workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench

【讨论】:

在日食靛蓝中。试试 rm workspace/.metadata/.plugins/org.eclipse.ui.workbench/ 这为我在 Windows 7 上使用 TIBCO BusinessWorks Design Studio 解决了这个问题。 在我的 MacBook pro 12" 上,这个解决方案最适合我【参考方案5】:

无需删除整个元数据。只需尝试删除工作区文件夹中 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 为我工作【参考方案6】:

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

元数据\.plugins\*.snap

【讨论】:

这使我免于丢失所有设置!【参考方案7】:

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

2) 现在在构建完美运行的项目时遇到问题?根据我的经验,以下步骤有帮助: - 取消选中项目->自动构建 - 切换到 Java 透视图(如果还没有的话):Window -> Open perspective -> Java - 定位 Problems 视图或打开它:Window -> Show view -> Problems - 右键单击​​问题组并选择删除。请务必删除 Lint 错误 - 清理工作区:Project -> Clean... 带有选项 Clean all projects - 检查项目->自动构建 - 如果某些项目仍然存在问题:右键单击项目,选择 Properties -> Android 并确保选择了适当的 Project Build Target

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

【讨论】:

谢谢!除了删除 workbench.xmi 没有其他工作 Windows 机器的绝佳解决方案。谢谢!【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

删除工作区/.metadata/.lock 并使用 -clean -refresh 启动 Eclipse 对我有用。

【讨论】:

【参考方案10】:

看来您可能遇到了这个问题:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=357199

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

我在 Windows 7 中遇到了这个问题,这就是为我解决的问题。

http://letsgetdugg.com/2009/04/19/recovering-a-corrupt-eclipse-workspace/

cd ~/Documents/workspace/.metalog/.plugins

rm -rf org.eclipse.core.resources

【讨论】:

【参考方案13】:

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

网络搜索您发现的消息通常会产生删除各种目录或文件并重新开始的建议。不过,我有时能够只删除 .metadata/.plugins/org.eclipse.ui.workbench/workbench.xml 的部分内容,以减少破坏性的解决方案。

【讨论】:

【参考方案14】:

删除 .metadata 目录中的文件的问题是您必须从头开始工作台。因此,恢复所有项目可能需要一段时间,尤其是在您有多个项目的情况下。仅通过用旧备份文件替换现有文件来从备份中恢复 .metadata 对我有用。

【讨论】:

【参考方案15】:

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

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

【讨论】:

【参考方案16】:

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

对工作区恢复的影响可以忽略不计。

我希望它可以帮助别人......

【讨论】:

【参考方案17】:

在您的工作区中,您将找到隐藏文件夹名称 .metadata,您将在其中找到另一个隐藏文件夹“.mylyn”,将其删除并清空垃圾箱 去任务管理器停止Eclipse的进程,然后重新启动Eclipse,这次就可以了。

享受吧!

【讨论】:

【参考方案18】:

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

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

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

【讨论】:

【参考方案19】:

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

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

打开 Eclipse,所有项目都应该可以正常工作了。

【讨论】:

【参考方案20】:

Eclipse freezing at startup - before loading workspace 这篇文章的答案很好。重复对我有用的答案

在您的工作区目录中执行以下步骤:

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(恢复原目录。)

启动 eclipse 并开始工作。 :-)

查尔斯B的回答

【讨论】:

【参考方案21】:

没有一个解决方案对我的情况有帮助。

我找到了可行的解决方案。我读到当 ADT 插件在 Eclipse 中没有正确更新时会发生这种情况。

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

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

【讨论】:

【参考方案22】:

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

【讨论】:

以上是关于Eclipse 在加载工作台上挂起的主要内容,如果未能解决你的问题,请参考以下文章

如果工作区中存在工作灯项目,则 com.worklight.studio.plugin 线程在 Eclipse 启动时挂起

Eclipse 在 Android SDK 内容加载器处挂起

java 工作空间sleeping怎么用

Ruby on Rails 控制台在加载时挂起

如何强制 Eclipse 要求默认工作区?

sql工作台上的单独表而不是单个表