【问题标题】:Android on Eclipse crashes every time I open main.xml每次打开 main.xml 时,Eclipse 上的 Android 都会崩溃
【发布时间】:2011-08-14 17:22:25
【问题描述】:

我已将 ADT 加载到经典 Eclipse 中。我按照此处的 Android Helloworld 入门指南中的步骤操作:http://developer.android.com/resources/tutorials/hello-world.html

每次我加载 main.xml 时都会出现问题。这似乎是 ADT 插件的一个问题,因为它与它拥有的 GUI 布局编辑器(在后台创建 XML 的那个)有关。如果我直接访问 XML 源,它不会崩溃。

我收到了不同的错误消息,内存不足,没有退出信息,以及“checkandloadtargetdata permgen 空间中的异常”。如果您对我的设置有任何疑问,请随时在 cmets 中发布,我会更新主题。

我正在运行 Windows 7 x64 位,安装相当干净。我也有 JDK 1.6。这是位于 .metadata 中的 Eclipse .log 文件中的文本。任何帮助将不胜感激。

!SESSION 2011-08-14 13:11:38.628 -----------------------------------------------
eclipse.buildId=I20110613-1736
java.version=1.6.0_26
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -debug -console -consoleLog

!ENTRY org.eclipse.ui 4 0 2011-08-14 13:11:51.038
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
    at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:260)
    at org.eclipse.ui.internal.registry.ViewDescriptor.createView(ViewDescriptor.java:63)
    at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:327)
    at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
    at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
    at org.eclipse.ui.internal.ViewReference.getView(ViewReference.java:198)

!ENTRY com.android.ide.eclipse.adt 4 0 2011-08-14 13:11:51.043
!MESSAGE Exception in checkAndLoadTargetData.
!STACK 0
java.lang.OutOfMemoryError: PermGen space

!ENTRY org.eclipse.ui 4 0 2011-08-14 13:11:51.056
!MESSAGE Error occurred during status handling
!STACK 0
java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    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.handle(StatusManager.java:242)
    at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopException(WorkbenchAdvisor.java:326)
    at org.eclipse.ui.internal.ExceptionHandler.handleException(ExceptionHandler.java:65)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2700)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

!ENTRY org.eclipse.ui 4 4 2011-08-14 13:13:59.256
!MESSAGE Invalid preference page path: XML Syntax

!ENTRY com.android.ide.eclipse.adt 4 0 2011-08-14 13:13:59.263
!MESSAGE Parsing Data for android-7 failed
!STACK 0
java.lang.OutOfMemoryError: PermGen space

尝试以下 eclipse.ini 设置后

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Xms2048m
-Xmx2048m
-XX:PermSize=1024m
-XX:MaxPermSize=1024m
-XX:+UseParallelGC

我现在得到了一些新的东西,因为如果我一直打开 Eclipse,main.xml 已经“打开”了,只是让它搅动几秒钟而不做任何事情,GUI 编辑器出现并且似乎正在工作美好的。如果我单击其他任何内容(例如 HelloAndroid.java 的选项卡),它就会锁定并崩溃。

【问题讨论】:

  • 这听起来像是应该向 Eclipse 报告的错误。

标签: android eclipse crash adt


【解决方案1】:

我认为您需要增加 PermGen 的大小。 Eclipse Wiki上有一篇文章。 1024m就够了。
无论如何,我的 eclipse.ini 也应该有所帮助。

cat /opt/eclipse/eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Xms2048m
-Xmx2048m
-XX:PermSize=1024m
-XX:MaxPermSize=1024m
-XX:+UseParallelGC

【讨论】:

  • 实际上现在它可以让我打开 Eclipse,main.xml 已经在工具栏上打开,并且 GUI 编辑器似乎工作正常。现在,当我尝试转到另一个选项卡时,它会崩溃。
  • 这很奇怪,好像出了点问题,你的内存用完了。我只能建议使用 -clean 标志运行 eclipse,清理项目,卸载额外的插件,重新安装 eclipse 或 windows 或安装 linux;)看看你的 xml 文件,也许它有一些错误,eclipse 无法正确解析它。并且在增加 PermGen 之后是否还有 OutOfMemoryError 异常或其他异常?
  • 当我尝试 google 一些东西时,我注意到 OutOfMemoryErrors 出现在早期版本的 eclipse 和 adt 插件中。所以这个问题看起来更像是一个错误而不是你的错。
【解决方案2】:

你必须将你的jdk版本升级到最新版本。我发现网上大多数情况是jdk5导致eclipse崩溃,他们通过升级到jdk6解决了。我使用了jdk6,但问题存在!最后我下载了latest version(jdk7) 并且eclipse不再崩溃了!

【讨论】:

    【解决方案3】:

    我卸载了 SDK,删除了我的 Eclipse 安装,然后重新安装了所有内容。

    我改变了一些值得注意的事情。

    -我将 Eclipse 安装移出程序文件目录,因为我知道 Windows 对它的处理方式不同。它现在在 C:/Eclipse

    -出于同样的原因,我将 Android SDK 移出程序文件目录,并确保路径中没有空格。现在在 C:/androidSDK/

    现在似乎工作正常。我想知道 eclipse 在一个程序文件目录中和 SDK 在另一个目录中是否存在冲突。我不知道 Windows 是否会根据它们所在的目录以不同的方式引导这些程序。无论如何,如果您遇到此类问题,请将它们移出程序文件目录。

    【讨论】:

    • 就我的经验而言,当您将一些 EE 插件安装到与 Android 插件相同的 Eclipse 上时会发生这种情况,更具体地说,这也发生在我仅安装 JavaScript 插件后!
    【解决方案4】:

    在尝试了这篇文章中的答案之后。这在 Windows 7 x64 位和 JDK 1.7 上对我有用 - 删除麻烦的 Eclipse (Mars Java + ADT) 并重新安装。我没有更改 PermSize,但在 eclipse.ini 文件中确实有 -Xms512m -Xmx1024m。原来的工作区也加载好了。

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 2015-12-29
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多