2011-08-14 17 views
6

我有ADT加載到經典的Eclipse。我遵循Android Helloworld入門指南中的步驟:http://developer.android.com/resources/tutorials/hello-world.htmlAndroid上的Eclipse崩潰每當我打開main.xml

每次加載main.xml時都會出現問題。它看起來與ADT插件有關,因爲它與它所具有的GUI佈局編輯器(在後臺創建XML的插件編輯器)有關。如果我直接訪問XML源,它不會崩潰。

我收到了不同的錯誤消息,內存不足,沒有退出信息,以及「checkandloadtargetdata permgen space中的異常」。如果您對我的設置有任何疑問,請隨時將它們發佈在評論中,我會更新該主題。

我正在運行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 

我現在得到新的東西后,我因爲main.xml中已經「打開」,如果我打開Eclipse一路,就讓它幾秒鐘內不做任何事情,GUI編輯器出現,似乎工作正常。如果我點擊其他任何東西(如HelloAndroid.java的選項卡),那麼它鎖定,並崩潰。

+0

這聽起來像是應該向Eclipse報告的錯誤。 – Yuliy

回答

0

我卸載了SDK,刪除了我的Eclipse安裝,並重新安裝了所有東西。

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

-I將Eclipse安裝移出了程序文件目錄,因爲我知道Windows會以不同的方式對待它。它現在在C:/ Eclipse

-I將Android SDK從程序文件目錄中移出,出於同樣的原因,並確保路徑中沒有空格。它現在在C:/ androidSDK/

似乎現在工作正常。我不知道這是否是一個程序文件目錄中的eclipse與另一箇中的SDK之間的衝突。我不知道Windows是否根據它們所在的目錄來啓動這些程序。無論如何,如果遇到類似問題,請將它們移出程序文件目錄。

+0

就我的經驗而言,當您將一些EE插件安裝到與Android插件相同的Eclipse上時,會發生這種情況,並且如果要更具體一些,在安裝JavaScript插件之後,這也發生在我身上! – TacB0sS

4

我認爲你需要增加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 
+0

實際上現在它可以讓我打開Eclipse,在工具欄上已經打開了main.xml,並且GUI編輯器看起來工作正常。當我嘗試去另一個標籤時它現在崩潰了。 – Jazzepi

+0

這很奇怪,似乎出了點問題,你用完了記憶。我只能建議使用-clean標誌運行eclipse,清理項目,卸載額外的插件,重新安裝eclipse或windows或安裝linux;)看看你的xml文件,也許它有一些錯誤,eclipse不能正確解析它。並且在增加PermGen之後,你是否仍然存在OutOfMemoryError異常或其他問題? – 4e6

+0

當我試圖谷歌的東西,我注意到OutOfMemoryErrors出現在早期版本的Eclipse和ADT插件。所以這個問題看起來更像是一個錯誤,而不是你的錯。 – 4e6

4

你必須升級你的jdk版本到最新的版本。我發現在線大多數情況下,jdk5導致eclipse崩潰,他們通過升級到jdk6。我用jdk6,但問題存在!最後我下載了latest version(jdk7),並且eclipse不再崩潰!

0

在本文中嘗試解答後。這適用於Windows 7 x64位和JDK 1.7 - 刪除麻煩的Eclipse(Mars Java + ADT)並重新安裝。我沒有更改PermSize,但我在eclipse.ini文件中有-Xms512m -Xmx1024m。原來的工作區加載也OK。

相關問題