Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
Posted by davidnewcomb on 15 Sep 2009 in Techie
Got attacked by a virus which went straight through Firefox’s defences then straight through McAfee’s defences then destroyed half of my machine. It’s still not running right, but I think the virus is now gone.
The virus attacked my Java installation and destroyed the classpath. When I tried to run Eclipse it flashed the splash screen and disappeared. There did not appear to be any error message from Eclipse to give me a clue as to the problem so I had to run Eclipse from the command line to find out what was going on.
- Open a command prompt
- Change directory to the root of Eclipse’s installation e.g.
cd c:\java\eclipse
- Call the Eclipse executable directly e.g.
eclipse.exe
Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/ObjectMy normal java setup still appeared to be fine, it was just Eclipse that wasn’t working. So I tried running Eclipse from the command line, avoiding the eclipse.exe executable. I used the following command line to kick start the equinox package manager and launch Eclipse. In my example I’m using Eclipse 3.5 Galileo, but in your version of Eclipse the launcher version may be different.
java -jar plugins\org.eclipse.equinox.launcher_1.0.200.v20090520.jarThis worked and launched Eclipse, but it immediately started to have problems with Java heap space which in turn caused problems for Background Indexer Crash Recovery and Initializing SpringSource Bundle Repository index. I eventually had to kill it. Next, I tried launching Eclipse with extra command line options found in eclipse.ini:
java -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -jar plugins\org.eclipse.equinox.launcher_1.0.200.v20090520.jarIt seemed to work, but then I got:
Error while logging event loop exception: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyToClipboard(CopyToClipboardAction.java:333) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canCopyAllToClipboard(CopyToClipboardAction.java:324) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction$CopyToClipboardEnablementPolicy.canEnable(CopyToClipboardAction.java:312) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.canEnable(CopyToClipboardAction.java:134) at org.eclipse.jdt.internal.ui.refactoring.reorg.CopyToClipboardAction.selectionChanged(CopyToClipboardAction.java:100) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchSelectionChanged(SelectionDispatchAction.java:262) at org.eclipse.jdt.ui.actions.SelectionDispatchAction.selectionChanged(SelectionDispatchAction.java:257) at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.runtime.Platform.run(Platform.java:888) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160) at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132) at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1160) at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1190) Logging exception: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: PermGen spaceI tried increasing the memory allocations with:
java -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx700m -jar plugins\org.eclipse.equinox.launcher_1.0.200.v20090520.jarbut it just delayed the problem. The next stage was to remove Java from my system. The current installations were corrupted to the point that I couldn’t use the Add or Remove Programs to uninstall them. I used regedit to search the registry for any entries that contained references to Java/JDK/JRE and deleted them. To end the clean up I deleted all the installation files from disk. Finally, I installed the JDK. I placed the JDK in
c:\Java\Java\jdk1.6.0_16
and let the installer choose the location for the JRE.
Re-ran the Eclipse’s shortcut and all was well.No feedback yet
Form is loading...