I have two IMP projects - first - is absolutely-default project created step-by-step by user guide, so it is about LEG, and it works fine. The second one is mine, it's about haxe programming language. So, now the most interesting part: when IMP applications are initializing, they search for some extensions needed for services. Services are provided by ServiceFactory (I mentioned it early), and extensions by ExtensionFactory. In my case bug appears in
private static ILanguageService loadLanguageService(IExtensionPoint extensionPoint, String language, String elementName, IConfigurationElement element) throws ExtensionException {...}
method. (in my version, latest for today, it is line 312 of org.eclipse.imp.utils.ExtensionFactory).
Bundle bundle = Platform.getBundle(element.getDeclaringExtension().getContributor().getName());
The problem is, that bundle generated for both cases (for LEG project and mine) are equal (or very similar) - and they are about LEG.bla-bla-bla.framework, or something like this (I'm not sure about spelling); so when I tried LEG project, IMP checks if bundle equals to LEG language (it was true) and returns me something useful, but when IMP checks the same at my own, haxe project, it fails - bundle was still connected to LEG, but language was haxe, so it returns somewhere null.
So, long story short, I decided to clean up everything I could, but it was late night and I accidentally deleted all the code of my project (played too long with Run Configurations and working sets). Luckily it all was stored in SVN, so I restored my project and, while restoring, I noticed your letter. I run project, it fails as before, I open Error Log, where I see the problem:
Unable to instantiate implementation of Language-specific parser plugin for language 'haxe' because of the following low level exception: java.lang.NoClassDefFoundError: org/antlr/runtime/RecognitionException
org.eclipse.imp.utils.ExtensionException: Unable to instantiate implementation of Language-specific parser plugin for language 'haxe' because of the following low level exception: java.lang.NoClassDefFoundError: org/antlr/runtime/RecognitionException
at org.eclipse.imp.utils.ExtensionFactory.loadLanguageService(ExtensionFactory.java:335)
at org.eclipse.imp.utils.ExtensionFactory.getLanguageServiceForElement(ExtensionFactory.java:290)
at org.eclipse.imp.utils.ExtensionFactory.createServiceExtensionForPlugin(ExtensionFactory.java:120)
at org.eclipse.imp.utils.ExtensionFactory.createServiceExtensionForPlugin(ExtensionFactory.java:156)
at org.eclipse.imp.utils.ExtensionFactory.createServiceExtension(ExtensionFactory.java:53)
at org.eclipse.imp.language.ServiceFactory.createExtension(ServiceFactory.java:550)
at org.eclipse.imp.language.ServiceFactory.loadService(ServiceFactory.java:582)
at org.eclipse.imp.language.ServiceFactory.getParseController(ServiceFactory.java:444)
at org.eclipse.imp.editor.LanguageServiceManager.initialize(LanguageServiceManager.java:123)
at org.eclipse.imp.editor.UniversalEditor.createPartControl(UniversalEditor.java:689)
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:662)
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271)
at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1417)
at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at org.eclipse.ui.internal.Workbench$28.runWithException(Workbench.java:1384)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3855)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3476)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2316)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
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:368)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Caused by: org.eclipse.core.runtime.CoreException: Plug-in "haXe_IDE" was unable to instantiate class "haxe.imp.parser.HaxeParseController".
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:180)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:874)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
at org.eclipse.imp.utils.ExtensionFactory.loadLanguageService(ExtensionFactory.java:323)
... 47 more
Caused by: java.lang.NoClassDefFoundError: org/antlr/runtime/RecognitionException
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:170)
... 51 more
Caused by: java.lang.ClassNotFoundException: org.antlr.runtime.RecognitionException
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 57 more
So, as I can see now, problem is that project doesn't pick up ANTLR Library (I use parser generated by ANTLR and some classes from it's library). Of course, in my project I have necessary library and can easily work with RecognitionException class. So, question of the day - how to check what libraries should be available at plugins runtime?
About things that could go wrong, you mentioned above - I checked them in the first place. =)