We normally setup custom VM configurations for compiling BlackBerry applications. This has worked well, until this week when I switched over to OSX. Our VM strings are different, so sharing .classpath files won't work (and that is really important for us).
Naturally, I decided to start using execution profiles instead so that the .classpath was more portable. The configuration of the existing execution environments won't work, we need to strip all libraries from a VM and simply point to one jar provided by RIM. No problem right? Wrong (at least as far as I can tell). I tried to find a way to customize the execution environment profile, but found that I needed to write a plugin.
That brings me to this issue:
I created a quick and dirty plugin to add the additional desired execution environment profiles, following the lead of the org.eclipse.jdt.launching plugin. All is well and I think I almost have what we need, but the plugin is blowing up on startup by failing to find org/eclipse/jdt/launching/environments/IExecutionEnvironmentAnalyzerDelegate.
As far as I can tell, that class is visible and available for me to reference, but that's as far as my understanding goes. I reference it as a dependency, and as a hail-mary I tried every other way to reference the class:
I think I'm fundamentally missing something here. Can someone point me in the right direction?
Thank you,
Kevin.
Stack Trace follows:
org.eclipse.core.runtime.CoreException: Plug-in org.metova.eclipse.blackberry was unable to load class org.metova.eclipse.blackberry.internal.launching.execution.ExecutionEnvironmentAnalyzer
. at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:180) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java
:164) at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:788) 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.jdt.internal.launching.environments.Analyzer.getDelegate(Analyzer.java
:51) at org.eclipse.jdt.internal.launching.environments.Analyzer.analyze(Analyzer.java:40) at org.eclipse.jdt.internal.launching.environments.EnvironmentsManager.analyze(EnvironmentsManager.java:336) at
org.eclipse.jdt.internal.launching.environments.EnvironmentsManager.initializeCompatibilities(EnvironmentsManager.java:241) at org.eclipse.jdt.internal.launching.environments.ExecutionEnvironment.init(ExecutionEnvironment.java
:152) at org.eclipse.jdt.internal.launching.environments.ExecutionEnvironment.getDefaultVM(ExecutionEnvironment.java:189) at org.eclipse.jdt.internal.launching.JREContainerInitializer.resolveVM(JREContainerInitializer.java
:132) at org.eclipse.jdt.internal.launching.JREContainerInitializer.resolveVM(JREContainerInitializer.java:99) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize(JREContainerInitializer.java
:57) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2203) at org.eclipse.jdt.internal.core.JavaModelManager$9.run(JavaModelManager.java:2133) at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2149) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java
:1543) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1571) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2558) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath
(JavaProject.java:1848) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:202) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:717)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:785) at org.eclipse.jdt.core.JavaCore.setClasspathVariables
(JavaCore.java:4605) at org.eclipse.jdt.core.JavaCore.setClasspathVariable(JavaCore.java:4569) at com.genuitec.eclipse.j2eedt.classpath.J2EEClasspathVariableInitializer.initialize(Unknown Source) at org.eclipse.jdt.core.JavaCore.getClasspathVariable
(JavaCore.java:1694) at com.genuitec.eclipse.core.util.ClasspathUtil.getClasspathVariableValue(ClasspathUtil.java:145) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.loadModule(ModuleManager.java:344)
at com.genuitec.eclipse.core.librarymgmt.ModuleManager.loadModules(ModuleManager.java:279) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.getModules(ModuleManager.java:84) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.getModules
(ModuleManager.java:70) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.initializeModules(ModuleManager.java:58) at com.genuitec.eclipse.j2eedt.core.J2EECore.start(Unknown Source) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run
(BundleContextImpl.java:999) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start
(BundleContextImpl.java:974) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass
(ClasspathManager.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java
:340) at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
(DefaultClassLoader.java:83) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) at com.genuitec.eclipse.jsf.core.JSFCore.getJSFEnabledWebProjects
(JSFCore.java:383) at com.genuitec.eclipse.jsf.core.JSFCore.getJSFEnabledWebProjects(JSFCore.java:379) at com.genuitec.eclipse.jsf.core.JSFCore.getProject(JSFCore.java:655) at org.eclipse.jst.jsf.core.jsfappconfig.JSFAppConfigUtils.isValidJSFProject
(JSFAppConfigUtils.java:133) at org.eclipse.jst.jsf.designtime.internal.jsp.StartupHandler$JSPEditorListener.isValidJSPEditor(StartupHandler.java:155) at org.eclipse.jst.jsf.designtime.internal.jsp.StartupHandler$1.run
(StartupHandler.java:62) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) at org.eclipse.swt.widgets.Display.runAsyncMessages
(Display.java:3212) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2956) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389) at org.eclipse.ui.internal.Workbench.runUI
(Workbench.java:2353) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault
(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start
(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java
:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:176) 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:585) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:504) at org.eclipse.equinox.launcher.Main.basicRun
(Main.java:443) at org.eclipse.equinox.launcher.Main.run(Main.java:1169) org.eclipse.core.runtime.CoreException[1]: java.lang.NoClassDefFoundError: org/eclipse/jdt/launching/environments/IExecutionEnvironmentAnalyzerDelegate
at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:675) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java
:161) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:501) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:471) at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:430) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:413) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass
(DefaultClassLoader.java:189) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:340) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java
:408) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
(DefaultClassLoader.java:83) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:289) at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass
(BundleHost.java:227) at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1269) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(
RegistryStrategyOSGI.java:160) at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:788) 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.jdt.internal.launching.environments.Analyzer.getDelegate
(Analyzer.java:51) at org.eclipse.jdt.internal.launching.environments.Analyzer.analyze(Analyzer.java:40) at org.eclipse.jdt.internal.launching.environments.EnvironmentsManager.analyze(EnvironmentsManager.java
:336) at org.eclipse.jdt.internal.launching.environments.EnvironmentsManager.initializeCompatibilities(EnvironmentsManager.java:241) at org.eclipse.jdt.internal.launching.environments.ExecutionEnvironment.init
(ExecutionEnvironment.java:152) at org.eclipse.jdt.internal.launching.environments.ExecutionEnvironment.getDefaultVM(ExecutionEnvironment.java:189) at org.eclipse.jdt.internal.launching.JREContainerInitializer.resolveVM
(JREContainerInitializer.java:132) at org.eclipse.jdt.internal.launching.JREContainerInitializer.resolveVM(JREContainerInitializer.java:99) at org.eclipse.jdt.internal.launching.JREContainerInitializer.initialize
(JREContainerInitializer.java:57) at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2203) at org.eclipse.jdt.internal.core.JavaModelManager$9.run(JavaModelManager.java
:2133) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2149) at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer
(JavaModelManager.java:1543) at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:1571) at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2558) at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath
(JavaProject.java:1848) at org.eclipse.jdt.internal.core.DeltaProcessingState.initializeRoots(DeltaProcessingState.java:202) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:717)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:785) at org.eclipse.jdt.core.JavaCore.setClasspathVariables
(JavaCore.java:4605) at org.eclipse.jdt.core.JavaCore.setClasspathVariable(JavaCore.java:4569) at com.genuitec.eclipse.j2eedt.classpath.J2EEClasspathVariableInitializer.initialize(Unknown Source) at org.eclipse.jdt.core.JavaCore.getClasspathVariable
(JavaCore.java:1694) at com.genuitec.eclipse.core.util.ClasspathUtil.getClasspathVariableValue(ClasspathUtil.java:145) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.loadModule(ModuleManager.java:344)
at com.genuitec.eclipse.core.librarymgmt.ModuleManager.loadModules(ModuleManager.java:279) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.getModules(ModuleManager.java:84) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.getModules
(ModuleManager.java:70) at com.genuitec.eclipse.core.librarymgmt.ModuleManager.initializeModules(ModuleManager.java:58) at com.genuitec.eclipse.j2eedt.core.J2EECore.start(Unknown Source) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run
(BundleContextImpl.java:999) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:993) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start
(BundleContextImpl.java:974) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:260)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400) at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass
(ClasspathManager.java:417) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:189) at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java
:340) at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:405)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:369) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:357) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
(DefaultClassLoader.java:83) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) at com.genuitec.eclipse.jsf.core.JSFCore.getJSFEnabledWebProjects
(JSFCore.java:383) at com.genuitec.eclipse.jsf.core.JSFCore.getJSFEnabledWebProjects(JSFCore.java:379) at com.genuitec.eclipse.jsf.core.JSFCore.getProject(JSFCore.java:655) at org.eclipse.jst.jsf.core.jsfappconfig.JSFAppConfigUtils.isValidJSFProject
(JSFAppConfigUtils.java:133) at org.eclipse.jst.jsf.designtime.internal.jsp.StartupHandler$JSPEditorListener.isValidJSPEditor(StartupHandler.java:155) at org.eclipse.jst.jsf.designtime.internal.jsp.StartupHandler$1.run
(StartupHandler.java:62) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) at org.eclipse.swt.widgets.Display.runAsyncMessages
(Display.java:3212) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2956) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389) at org.eclipse.ui.internal.Workbench.runUI
(Workbench.java:2353) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466) at org.eclipse.core.databinding.observable.Realm.runWithDefault
(Realm.java:289) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start
(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java
:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363) at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:176) 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:585) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:504) at org.eclipse.equinox.launcher.Main.basicRun
(Main.java:443) at org.eclipse.equinox.launcher.Main.run(Main.java:1169)