Java Eclipse(和m2eclipse)的问题

Java Eclipse(和m2eclipse)的问题,java,eclipse,jsf,m2eclipse,Java,Eclipse,Jsf,M2eclipse,我使用Eclipse时遇到了严重的问题:-(首先,我试图为您粗略地重建我的情况: 我安装了EclipseJavaEEHelios和JDK1.6.0_21,并配置了windows的系统变量 我安装了m2eclipse 我为一个JSFWebProject生成了一个原型 我使用Windows XP Professional SP3 所以…现在Eclipse出现了很大的问题。当我尝试打开pom.xml或使用一些特定于maven的选项时,Eclipse停止工作,并出现permgen空间错误,如我上一次会话

我使用Eclipse时遇到了严重的问题:-(首先,我试图为您粗略地重建我的情况:

  • 我安装了EclipseJavaEEHelios和JDK1.6.0_21,并配置了windows的系统变量
  • 我安装了m2eclipse
  • 我为一个JSFWebProject生成了一个原型
  • 我使用Windows XP Professional SP3

    所以…现在Eclipse出现了很大的问题。当我尝试打开pom.xml或使用一些特定于maven的选项时,Eclipse停止工作,并出现permgen空间错误,如我上一次会话中所示:

    !SESSION 2010-07-12 16:45:23.671 -----------------------------------------------
    eclipse.buildId=I20100608-0911
    java.version=1.6.0_21
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
    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 2010-07-12 16:45:24.796
    !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
    
    !ENTRY org.eclipse.ui 4 0 2010-07-12 16:54:53.046
    !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:580)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
     at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
     at java.lang.ClassLoader.loadClass(Unknown Source)
     at org.eclipse.jface.action.ActionContributionItem.copyMenu(ActionContributionItem.java:1270)
     at org.eclipse.jface.action.ActionContributionItem.handleShowProxy(ActionContributionItem.java:1248)
     at org.eclipse.jface.action.ActionContributionItem.access$4(ActionContributionItem.java:1237)
     at org.eclipse.jface.action.ActionContributionItem$8.handleEvent(ActionContributionItem.java:1210)
     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
     at org.eclipse.swt.widgets.Control.WM_INITMENUPOPUP(Control.java:4485)
     at org.eclipse.swt.widgets.Control.windowProc(Control.java:4188)
     at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
     at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
     at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
     at org.eclipse.swt.widgets.Display.windowProc(Display.java:4886)
     at org.eclipse.swt.internal.win32.OS.TrackPopupMenu(Native Method)
     at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:256)
    
    !ENTRY org.eclipse.core.jobs 4 2 2010-07-12 16:54:53.046
    !MESSAGE An internal error occurred during: "Periodic workspace save.".
    !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:580)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
     at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
     at java.lang.ClassLoader.loadClass(Unknown Source)
     at org.eclipse.jdt.internal.core.JavaModelManager.saveVariablesAndContainers(JavaModelManager.java:3819)
     at org.eclipse.jdt.internal.core.JavaModelManager.saving(JavaModelManager.java:4065)
     at org.eclipse.core.internal.resources.SaveManager.executeLifecycle(SaveManager.java:361)
     at org.eclipse.core.internal.resources.SaveManager$1.run(SaveManager.java:170)
     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
     at org.eclipse.core.internal.resources.SaveManager.broadcastLifecycle(SaveManager.java:173)
     at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1108)
     at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1087)
     at org.eclipse.core.internal.resources.DelayedSnapshotJob.run(DelayedSnapshotJob.java:44)
     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
    
    !ENTRY org.eclipse.ui 4 0 2010-07-12 16:54:56.109
    !MESSAGE Unhandled event loop exception
    !STACK 0
    java.lang.OutOfMemoryError: PermGen space
     at java.lang.Class.getDeclaredMethods0(Native Method)
     at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod0(Unknown Source)
     at java.lang.Class.getMethod(Unknown Source)
     at org.eclipse.ui.internal.handlers.WidgetMethodHandler.getMethodToExecute(WidgetMethodHandler.java:265)
     at org.eclipse.ui.internal.handlers.WidgetMethodHandler.isHandled(WidgetMethodHandler.java:247)
     at org.eclipse.ui.internal.handlers.WidgetMethodHandler.updateEnablement(WidgetMethodHandler.java:57)
     at org.eclipse.ui.internal.handlers.WidgetMethodHandler$1.handleEvent(WidgetMethodHandler.java:49)
     at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
     at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1253)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
     at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
     at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2618)
     at org.eclipse.swt.widgets.Widget.wmSetFocus(Widget.java:2402)
     at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4792)
     at org.eclipse.swt.widgets.Canvas.WM_SETFOCUS(Canvas.java:448)
     at org.eclipse.swt.widgets.Decorations.WM_SETFOCUS(Decorations.java:1748)
     at org.eclipse.swt.widgets.Control.windowProc(Control.java:4229)
     at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
     at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
     at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
     at org.eclipse.swt.widgets.Display.windowProc(Display.java:4886)
     at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method)
     at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:230)
     at org.eclipse.swt.widgets.Shell.open(Shell.java:1194)
     at org.eclipse.jface.window.Window.open(Window.java:797)
    
    !ENTRY org.eclipse.ui 4 4 2010-07-12 16:55:02.046
    !MESSAGE An internal error has occurred.
    !STACK 0
    java.lang.OutOfMemoryError: PermGen space
    
    !ENTRY org.eclipse.ui 4 0 2010-07-12 16:55:09.781
    !MESSAGE Unhandled event loop exception
    !STACK 0
    java.lang.OutOfMemoryError: PermGen space
    !SESSION 2010-07-12 17:17:04.234 -----------------------------------------------
    eclipse.buildId=I20100608-0911
    java.version=1.6.0_21
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
    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 2010-07-12 17:17:05.359
    !MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
    
    !ENTRY org.eclipse.jdt.core 4 4 2010-07-12 17:17:05.843
    !MESSAGE Unable to read variable and containers file
    !STACK 0
    java.io.EOFException
     at java.io.DataInputStream.readInt(DataInputStream.java:375)
     at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersLoadHelper.loadInt(JavaModelManager.java:3344)
     at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersLoadHelper.loadProjects(JavaModelManager.java:3373)
     at org.eclipse.jdt.internal.core.JavaModelManager$VariablesAndContainersLoadHelper.load(JavaModelManager.java:3212)
     at org.eclipse.jdt.internal.core.JavaModelManager.loadVariablesAndContainers(JavaModelManager.java:3049)
     at org.eclipse.jdt.internal.core.JavaModelManager.startup(JavaModelManager.java:4705)
     at org.eclipse.jdt.core.JavaCore.start(JavaCore.java:5048)
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783)
     at java.security.AccessController.doPrivileged(Native Method)
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774)
     at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755)
     at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370)
     at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:284)
     at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:417)
     at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:265)
     at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:106)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:453)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
     at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
     at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)
     at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)
     at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)
     at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
     at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904)
     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.core.internal.preferences.PreferenceServiceRegistryHelper.addModifyListener(PreferenceServiceRegistryHelper.java:90)
     at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper.getModifyListeners(PreferenceServiceRegistryHelper.java:186)
     at org.eclipse.core.internal.preferences.PreferencesService.firePreApplyEvent(PreferencesService.java:440)
     at org.eclipse.core.internal.preferences.PreferencesService.applyPreferences(PreferencesService.java:122)
     at org.eclipse.core.internal.resources.ProjectPreferences.read(ProjectPreferences.java:234)
     at org.eclipse.core.internal.resources.ProjectPreferences.updatePreferences(ProjectPreferences.java:302)
     at org.eclipse.core.internal.resources.File.updateMetadataFiles(File.java:414)
     at org.eclipse.core.internal.localstore.RefreshLocalVisitor.visit(RefreshLocalVisitor.java:297)
     at org.eclipse.core.internal.localstore.UnifiedTree.accept(UnifiedTree.java:108)
     at org.eclipse.core.internal.localstore.FileSystemResourceManager.refreshResource(FileSystemResourceManager.java:824)
     at org.eclipse.core.internal.localstore.FileSystemResourceManager.refresh(FileSystemResourceManager.java:808)
     at org.eclipse.core.internal.localstore.FileSystemResourceManager.refreshRoot(FileSystemResourceManager.java:855)
     at org.eclipse.core.internal.localstore.FileSystemResourceManager.refresh(FileSystemResourceManager.java:801)
     at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1661)
     at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:166)
     at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
    
    !ENTRY org.eclipse.ui 4 4 2010-07-12 17:20:11.921
    !MESSAGE Could not create action delegate for id: org.maven.ide.eclipse.editor.RenameProjectAction
    
    !ENTRY org.eclipse.ui 4 4 2010-07-12 17:20:11.921
    !MESSAGE Internal plug-in action delegate error on creation.
    !STACK 0
    java.lang.OutOfMemoryError: PermGen space
     at java.lang.ClassLoader.defineClass1(Native Method)
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
     at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
     at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
     at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
     at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:466)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
     at java.lang.Class.getDeclaredConstructors0(Native Method)
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
     at java.lang.Class.getConstructor0(Class.java:2699)
     at java.lang.Class.newInstance0(Class.java:326)
     at java.lang.Class.newInstance(Class.java:308)
     at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
     at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:904)
     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:259)
     at org.eclipse.ui.internal.PluginAction.createDelegate(PluginAction.java:122)
     at org.eclipse.ui.internal.PluginAction.selectionChanged(PluginAction.java:275)
     at org.eclipse.ui.internal.PluginAction.<init>(PluginAction.java:112)
     at org.eclipse.ui.internal.ObjectPluginAction.<init>(ObjectPluginAction.java:83)
     at org.eclipse.ui.internal.ActionDescriptor.createAction(ActionDescriptor.java:272)
    
    也许有问题?!有人有主意吗

    编辑:我得说这样更好。这种问题很少发生

    更新2: 请找人帮我配置我的eclips.ini,这样我就可以使用JDK 6-21了…或者我应该使用旧版本吗

    到目前为止就是这样:

    -startup
    plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
    -product
    org.eclipse.epp.package.jee.product
    --launcher.defaultAction
    openFile
    -XX:PermSize=128M
    -XX:MaxPermSize=256m
    -showsplash
    org.eclipse.platform
    --launcher.defaultAction
    openFile
    -vmargs
    -Dosgi.requiredJavaVersion=1.5
    -Xms128m
    -Xmx512m
    
    好的,我按照船长的建议发布了另一个问题:

    您需要通过在eclipse.ini中传递-XX:MaxPermSize=256m来增加最大perm大小

    注意:对于Helios和您的java版本,请使用上述参数,使用其他参数(launcher.XXMaxPermSize)将无法工作,因为存在错误

    请参阅以下链接中的更多内容:


    我的EclipseGalileo也有类似的问题。在我更新JDK1.6.021之前,JDK6更新3一直运行良好

    当我将JDK路径更改为指向JDK 6 update 3时,它开始正常工作

    希望这有帮助

    谢谢,
    Amit Chhajed

    另一个对我有效的选项是添加运行->调试配置…->(您的Maven构建)->JRE选项卡->虚拟机参数一些虚拟机参数:

    -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:NewSize=128m
    
    希望这有助于

    更新:

    甚至,您可以将相同的参数添加到:


    窗口->首选项->Java->安装的JRE->(您首选的JDK或Maven实例使用的JRE)->默认VM参数

    请编辑该问题,而不是添加更新作为答案。根据您的更新,我认为这不是同一个问题。Permgen内存错误将导致异常,而不是导致eclipse陷入无休止的循环。我建议您查看eclipse日志,并可能发布另一个问题。是的。ini中设置的内存限制被VM忽略。
    -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:NewSize=128m