vazexqi / CodingSpectator

Watches and analyzes code edits in the Eclipse IDE non-invasively
http://codingspectator.cs.illinois.edu
Other
20 stars 14 forks source link

CodingSpectator does not install on an Eclipse owned by root #242

Open reprogrammer opened 13 years ago

reprogrammer commented 13 years ago

CodingSpectator has failed to upload data from one of the workspaces of a participant. The participant has reported the following exceptions in the error log.

Message: Unhandled event loop exception

Trace:

java.lang.NoClassDefFoundError: org/eclipse/ltk/core/refactoring/codingspectator/RunningModes
at edu.illinois.codingspectator.monitor.ui.AuthenticationPrompter.getRepositoryURL(AuthenticationPrompter.java:118)
at edu.illinois.codingspectator.monitor.ui.submission.Submitter.authenticateAndInitialize(Submitter.java:63)
at edu.illinois.codingspectator.monitor.ui.submission.Submitter.promptUntilValidCredentialsOrCanceled(Submitter.java:145)
at edu.illinois.codingspectator.monitor.ui.Uploader.promptUntilValidCredentialsOrCanceled(Uploader.java:40)
at edu.illinois.codingspectator.monitor.ui.WorkbenchPreferencePage$1.widgetSelected(WorkbenchPreferencePage.java:89)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:211)
at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: java.lang.ClassNotFoundException: org.eclipse.ltk.core.refactoring.codingspectator.RunningModes
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
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)
... 43 more
Message: Unable to execute early startup code for an extension

Trace:

java.lang.NoClassDefFoundError: org/eclipse/ltk/core/refactoring/codingspectator/RunningModes
at edu.illinois.codingspectator.monitor.ui.Activator.shouldUpload(Activator.java:106)
at edu.illinois.codingspectator.monitor.ui.Activator.earlyStartup(Activator.java:96)
at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:87)
at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:66)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.Workbench$59.run(Workbench.java:2409)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.ClassNotFoundException: org.eclipse.ltk.core.refactoring.codingspectator.RunningModes
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
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)
... 7 more
reprogrammer commented 13 years ago

@Wanderer777, @vazexqi: Participant cs-105 uses Eclipse Class (3.6.1) and AJDT 2.1.2. CodingSpectator 1.0.0.201105300951 has failed to fully install on the Eclipse of this participant.

I downloaded Eclipse SDK 3.6.1 from http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php and AJDT from http://download.eclipse.org/tools/ajdt/36/update/ajdt_2.1.3_for_eclipse_3.6.zip. I installed AJDT and then CodingSpectator 1.0.0.201105300951 without seeing the problems that the participant has reported.

reprogrammer commented 13 years ago

@Wanderer777, @vazexqi: Participant cs-508 has encountered the same exception:

java.lang.NoClassDefFoundError: org/eclipse/ltk/core/refactoring/codingspectator/RunningModes
    at edu.illinois.codingspectator.monitor.ui.AuthenticationPrompter.getRepositoryURL(AuthenticationPrompter.java:118)
    at edu.illinois.codingspectator.monitor.ui.submission.Submitter.authenticateAndInitialize(Submitter.java:63)
    at edu.illinois.codingspectator.monitor.ui.submission.Submitter.promptUntilValidCredentialsOrCanceled(Submitter.java:145)
    at edu.illinois.codingspectator.monitor.ui.Uploader.promptUntilValidCredentialsOrCanceled(Uploader.java:40)
    at edu.illinois.codingspectator.monitor.ui.WorkbenchPreferencePage$1.widgetSelected(WorkbenchPreferencePage.java:89)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
    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.Display.runDeferredEvents(Display.java:4165)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    at org.eclipse.jface.window.Window.open(Window.java:801)
    at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.open(WorkbenchPreferenceDialog.java:215)
    at org.eclipse.ui.internal.handlers.ShowPreferencePageHandler.execute(ShowPreferencePageHandler.java:54)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
    at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
    at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
    at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
    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.Display.runDeferredEvents(Display.java:4165)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
    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)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

Update: Participant cs-508 told me on Nov. 1, 2011 that he had managed to install CodingSpectator.

reprogrammer commented 13 years ago

Participant cs-105 kindly let us troubleshoot the installation of CodingSpectator. This participant has installed Eclipse in a "root" space. That is, the owner user and group of all of the installation files of Eclipse are "root". But, the user runs Eclipse with the permissions of a regular user. As a result, all third-party plug-ins that the participant installs on Eclipse go to the home folder of the participant not inside the Eclipse installation folder.

When the participant installed a fresh copy of Eclipse in a "root" space and tried to install CodingSpectator, Eclipse reported the following error message:

Cannot complete the install because of a conflicting dependency.
 Software being installed: CodingSpectator 1.0.0.201107172332 (edu.illinois.codingspectator.feature.group 1.0.0.201107172332)
 Software currently installed: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500)
 Only one of the following can be installed at once:
   Java Development Tools UI 3.6.1.r361_v20100825-0800 (org.eclipse.jdt.ui 3.6.1.r361_v20100825-0800)
   Java Development Tools UI 3.6.0.201107172332 (org.eclipse.jdt.ui 3.6.0.201107172332)
 Cannot satisfy dependency:
   From: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500) 
   To: org.eclipse.jdt.feature.group [3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH]
 Cannot satisfy dependency:
   From: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500)
   To: org.eclipse.jdt.ui [3.6.1.r361_v20100825-0800]
 Cannot satisfy dependency:
   From: CodingSpectator 1.0.0.201107172332 (edu.illinois.codingspectator.feature.group 1.0.0.201107172332)
   To: edu.illinois.codingspectator.jdt.patch.feature.group [1.0.0.201107172332]
 Cannot satisfy dependency:
   From Patch: edu.illinois.codingspectator.jdt.patch.feature.group 1.0.0.201107172332 Eclipse Java Development Tools 3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH (org.eclipse.jdt.feature.group 3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH)
   To: org.eclipse.jdt.ui [3.6.0.201107172332]

And, when the participant tried to install CodingSpectator on the original Eclipse, which is in a "root" space, Eclipse reported the following error message:

Cannot complete the install because of a conflicting dependency.
 Software being installed: CodingSpectator 1.0.0.201107172332 (edu.illinois.codingspectator.feature.group 1.0.0.201107172332)
 Software currently installed: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500)
 Only one of the following can be installed at once:
   Java Development Tools Core 3.6.0.201107172332 (org.eclipse.jdt.core 3.6.0.201107172332)
   Java Development Tools Core 3.6.0.v_A58 (org.eclipse.jdt.core 3.6.0.v_A58)
   Java Development Tools Core 3.6.2.v_A76_R36x (org.eclipse.jdt.core 3.6.2.v_A76_R36x)
   Java Development Tools Core 3.6.1.v_A68_R36x (org.eclipse.jdt.core 3.6.1.v_A68_R36x)
 Cannot satisfy dependency:
   From: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500)
   To: org.eclipse.jdt.core [3.6.1.v_A68_R36x]
 Cannot satisfy dependency:
   From: Shared profile 1.0.0.1284044641500 (SharedProfile_SDKProfile 1.0.0.1284044641500)
   To: org.eclipse.jdt.feature.group [3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH]
 Cannot satisfy dependency:
   From: CodingSpectator 1.0.0.201107172332 (edu.illinois.codingspectator.feature.group 1.0.0.201107172332)
   To: edu.illinois.codingspectator.jdt.patch.feature.group [1.0.0.201107172332] Cannot satisfy dependency:
   From Patch: edu.illinois.codingspectator.jdt.patch.feature.group 1.0.0.201107172332 Eclipse Java Development Tools 3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH (org.eclipse.jdt.feature.group 3.6.1.r361_v20100714-0800-7z8XFUSFLFlmgLc5z-Bvrt8-HVkH)
   To: org.eclipse.jdt.core [3.6.0.201107172332]

But, the user successfully installed CodingSpectator on an Eclipse in a "user" space.

reprogrammer commented 12 years ago

@Wanderer777:

Participant cs-506 has reported a similar problem:

Cannot complete the install because of a conflicting dependency.
  Software being installed: CodingSpectator 1.0.0.201110132018 (edu.illinois.codingspectator.feature.group 1.0.0.201110132018)
  Software currently installed: Shared profile 1.0.0.1317160468326 (SharedProfile_PlatformProfile 1.0.0.1317160468326)
  Software currently installed: Eclipse CVS Client 1.3.100.dist-7B78FHk9exZ_ (org.eclipse.cvs.feature.group 1.3.100.dist-7B78FHk9exZ_)
  Only one of the following can be installed at once: 
    Core Resource Management 3.7.100.201110132018 (org.eclipse.core.resources 3.7.100.201110132018)
    Core Resource Management 3.7.100.dist (org.eclipse.core.resources 3.7.100.dist)
  Cannot satisfy dependency:
    From: Shared profile 1.0.0.1317160468326 (SharedProfile_PlatformProfile 1.0.0.1317160468326)
    To: org.eclipse.core.resources [3.7.100.dist]
  Cannot satisfy dependency:
    From: CodingSpectator 1.0.0.201110132018 (edu.illinois.codingspectator.feature.group 1.0.0.201110132018)
    To: edu.illinois.codingspectator.platform.patch.feature.group [1.0.0.201110132018]
  Cannot satisfy dependency:
    From: Eclipse CVS Client 1.3.100.dist-7B78FHk9exZ_ (org.eclipse.cvs.feature.group 1.3.100.dist-7B78FHk9exZ_)
    To: org.eclipse.platform.feature.group 3.7.0
  Cannot satisfy dependency:
    From Patch: edu.illinois.codingspectator.platform.patch.feature.group 1.0.0.201110132018 Eclipse Platform 3.7.0.dist-9pF7UHbtFs8vdhkukhQodUHz-siCnGGYotSeiRH (org.eclipse.platform.feature.group 3.7.0.dist-9pF7UHbtFs8vdhkukhQodUHz-siCnGGYotSeiRH)
    To: org.eclipse.core.resources [3.7.100.201110132018]

I'm using Eclipse 3.7.0 (Build id: I20110613-1736) on Ubuntu 11.04.

It is a known issue that CodingSpectator doesn't install on an instance of Eclipse owned by root.

reprogrammer commented 12 years ago

@Wanderer777:

The plug-in org.eclipse.core.resources [3.7.100.dist] is not specific to Indigo SR1. Both Indigo and Indigo SR1 contain the following plug-in:

Core Resource Management 3.7.100.v20110510-0712 org.eclipse.core.resources

reprogrammer commented 12 years ago

@vazexqi, @Wanderer777:

I was able to reproduce this problem and resolve it by running Eclipse as root. Bug 339659 gave me the idea of this workaround.

reprogrammer commented 12 years ago

Participant cs-105 reported the following when he or she installed CodingSpectator by running Eclipse as root:

Unfortunately when I restarted Eclipse as myself (not root), nothing worked, every action led to Eclipse hanging and reporting a Java Heap Space error after a minute or so. So I started Eclipse as root again and uninstalled coding spectator. Now when I start Eclipse as myself, things are back to normal...

It looks like installing CodingSpectator by running as root is not a good solution. This is because when I install CodingSpectator as root, all the created files are created with root permissions. So when I restart Eclipse as myself, those files cannot be edited/changed. In fact, even existing files that are changed during the process are given root permissions. So I just had to go to my workspace and change the owner/group of all the files in .metadata to my user/group because they had been changed to root.