Coder Social home page Coder Social logo

bndtools / bndtools Goto Github PK

View Code? Open in Web Editor NEW
192.0 41.0 91.0 425.93 MB

ARCHIVED: The contents of this repo have been merged into the `bnd` repo.

Home Page: https://github.com/bndtools/bnd

License: Eclipse Public License 1.0

Java 90.17% CSS 0.01% HTML 1.37% Shell 0.35% Perl 0.31% Python 0.10% XSLT 6.99% Batchfile 0.70%
bndtools java eclipse osgi osgi-development

bndtools's Introduction

Bndtools: OSGi Development Tools for Eclipse

=====================

Please visit the Bndtools Home Page for full documentation.

Installation

Install using the Eclipse installer, using the following update site URL:

https://dl.bintray.com/bndtools/bndtools/latest/

If you are feeling brave, install the latest alpha version from the following update site URLs instead:

https://bndtools.ci.cloudbees.com/job/bndtools.master/lastSuccessfulBuild/artifact/build/generated/p2/

License

BndTools is licensed under the Eclipse Public License v1.0.

Building

Gradle is used to build bndtools. The workspace root has a build.gradle file that builds all projects in proper order.

./gradlew - Assembles and packages the projects into build/generated

The workspace root also includes the gradle wrapper, gradlew, command.

CloudBees Build Status Travis CI Build Status

Release

bndtools is continuously built and released on CloudBees.

Built on DEV@cloud

Feedback

Feedback is always welcome, for general discussions use the [email protected] list. We also have the [email protected] list for discussions on the development of bndtools.

Bugs and issues should go to https://github.com/bndtools/bndtools/issues

Contributing

Want to hack on bndtools? There are instructions to get you started.

They are probably not perfect, please let us know if anything feels wrong or incomplete.

Acknowledgements

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

YourKit

bndtools's People

Contributors

ateirney avatar bjhargrave avatar bryanhunt avatar davemssavage avatar derheld42 avatar duckasteroid avatar fhuberts avatar gamerson avatar garethcollins avatar jlewallen avatar jpasski avatar jwahlman avatar lostiniceland avatar njbartlett avatar paulbakker avatar peterkir avatar pkriens avatar psoreide avatar rherrmann avatar rkrzewski avatar rotty3000 avatar seanbright avatar timothyjward avatar tjwatson avatar tomq42 avatar wodencafe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bndtools's Issues

Look inside a lib

Would be really nice to look inside a lib, or at least gray out its constituents

cannot install on Eclipse Helios SR1

I tried to install BndTools in Eclipse Helios SR1 to no avail... also tried with a fresh and clean install (using the Eclipse IDE for Java package, Mac OSX 32Bits).

The BndTools bundles are "Installed" but not "Resolved" (ony the jareditor is resolved).

Is Helios SR1 simply not supported yet ? Am I missing a newer version / nightly build ?

Support the use of * for Service-Component

bnd will search the bundle for components if you do:

Service-Component: *

bndtools displays this as a warning, would be nice if this was OK and even supported with a checkbox on the components page.

Launching seems to be not working for me ... neither OSGi Test nor OSGi run

Loading launcher properties from /var/folders/yU/yU0drc6RH0mU1vdVnFzy2++++TI/-Tmp-/bndtools.launcher3447985155625169919.properties.
Setting main log level to ALL.
Logging to the console.
May 14, 2010 10:18:24 AM bndtools.launcher.Main initialiseStorage
FINE: Using storage dir: /Ws/temp/experiments/runtimefw.
May 14, 2010 10:18:24 AM bndtools.launcher.Main initialiseStorage
INFO: Cleaning storage directory /Ws/temp/experiments/runtimefw.
May 14, 2010 10:18:24 AM bndtools.launcher.ServiceFinder loadOneInstance
FINE: Discovered OSGi FrameworkFactory implementation class: org.eclipse.osgi.launch.EquinoxFactory.
May 14, 2010 10:18:24 AM bndtools.launcher.Main createAndRunFramework
INFO: Created framework
May 14, 2010 10:18:25 AM bndtools.launcher.Main createAndRunFramework
INFO: Started framework
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller init
INFO: BundleInstaller detected 0 pre-installed bundles with "file:" locations.
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller synchronizeBundles
FINE: Launch properties file has changed
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performInstalls
FINE: Installing bundle file:/Ws/temp/experiments/generated/experiments.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performInstalls
FINE: Installing bundle file:/Ws/temp/cnf/repo/osgi.cmpn/osgi.cmpn-4.2.1.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performInstalls
FINE: Installing bundle file:/Ws/temp/cnf/repo/org.apache.felix.scr/org.apache.felix.scr-1.4.0.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performInstalls
FINE: Installing bundle file:/Ws/temp/cnf/repo/bndtools.runtime.junit/bndtools.runtime.junit-0.0.0.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performStarts
FINE: Starting bundle file:/Ws/temp/experiments/generated/experiments.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performStarts
FINE: Starting bundle file:/Ws/temp/cnf/repo/osgi.cmpn/osgi.cmpn-4.2.1.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performStarts
FINE: Starting bundle file:/Ws/temp/cnf/repo/org.apache.felix.scr/org.apache.felix.scr-1.4.0.jar
May 14, 2010 10:18:25 AM bndtools.launcher.BundleInstaller performStarts
FINE: Starting bundle file:/Ws/temp/cnf/repo/bndtools.runtime.junit/bndtools.runtime.junit-0.0.0.jar
May 14, 2010 10:18:25 AM bndtools.runtime.junit.internal.Activator start
FINE: Starting JUnit Activator
May 14, 2010 10:18:25 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 0.
May 14, 2010 10:18:25 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 1.
May 14, 2010 10:18:25 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 2.
May 14, 2010 10:18:25 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 3.
May 14, 2010 10:18:26 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 4.
May 14, 2010 10:18:27 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 5.
May 14, 2010 10:18:28 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 6.
May 14, 2010 10:18:29 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 7.
May 14, 2010 10:18:30 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 8.
May 14, 2010 10:18:32 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
FINE: Connecting to JUnit reporting socket on port 58117, attempt number 9.
May 14, 2010 10:18:34 AM bndtools.runtime.junit.internal.JUnitPortReporter createReporter
SEVERE: Unable to connect to JUnit reporting socket on port 58117
May 14, 2010 10:18:34 AM bndtools.runtime.junit.internal.Activator maybeKillFramework
INFO: SHUTTING DOWN OSGi FRAMEWORK.
May 14, 2010 10:18:34 AM bndtools.runtime.junit.internal.Activator stop
FINE: Stopping JUnit activator
May 14, 2010 10:18:34 AM bndtools.launcher.Main createAndRunMainThreadExecutor
FINE: Main thread polling for work.
May 14, 2010 10:18:34 AM bndtools.launcher.Main run
INFO: Waiting for the framework to stop.
May 14, 2010 10:18:34 AM bndtools.launcher.Main run
INFO: Framework stopped.
May 14, 2010 10:18:34 AM bndtools.launcher.Main run
INFO: Main thread finishing.

bndtools updated today

Do not delete all files at the target directory

If I include any other file at the target directory the class bndtools.builder.BndIncrementalBuilder at

// Delete target files
Project model = Plugin.getDefault().getCentral().getModel(JavaCore.create(getProject()));
try {
model.clean();
} catch (Exception e) {
throw new CoreException(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error cleaning project outputs.", e));
}

Just delete them all, it could just clean the generated files.

Adding a fragment to -runbundles defers running tests

Fragments never get active, but still the test runner waits for them to get active:

INFO: Deferring JUnit run, bundle "org.eclipse.persistence.jpa.equinox" (and perhaps others) is not yet active.
14.10.2010 16:12:31 bndtools.launcher.BundleInstaller performStarts

NullPointer when target is outside workspace in bndtools.builder.BndIncrementalBuilder

The following code is throwing NullPointer when the target is not inside Eclipse:

File targetDir = model.getTarget();
IContainer target = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(new Path(targetDir.getAbsolutePath()));
target.refreshLocal(IResource.DEPTH_INFINITE, null);

A simple fix could be:

File targetDir = model.getTarget();
IContainer target = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(new Path(targetDir.getAbsolutePath()));
if(target != null)
target.refreshLocal(IResource.DEPTH_INFINITE, null);

Use packaginfo as default versioning for packages

bndtools asks for a version policy when exporting a package. It should check for the existence of packaginfo. If not it should ask to create it. The existing options should be made non-default. I think.

Workspace not found when trying to use bndtools

When I try to add the bndtools nature, I try to create a new OSGi projet or I try to watch the bndtools related preferences, I get the following exception:

http://pastebin.com/uR9ara6H

or

org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle bndtools.core (494).
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:121)
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.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:267)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:263)
at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceNode.createPage(WorkbenchPreferenceNode.java:47)
at org.eclipse.jface.preference.PreferenceDialog.createPage(PreferenceDialog.java:1339)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.createPage(FilteredPreferenceDialog.java:376)
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1230)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:673)
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:708)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:704)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:867)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:865)
at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1205)
at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1230)
at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:251)
at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:245)
at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:419)
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:3527)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3174)
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:3552)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3171)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
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: org.osgi.framework.BundleException: Exception in bndtools.Plugin.start() of bundle bndtools.core.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806)
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)
... 73 more
Caused by: java.lang.IllegalArgumentException: No Workspace found from: /home/loris/workspace-helios
at aQute.bnd.build.Workspace.getWorkspace(Workspace.java:54)
at aQute.bnd.plugin.Central.getWorkspace(Central.java:164)
at aQute.bnd.plugin.Central.(Central.java:46)
at aQute.bnd.plugin.Activator.start(Activator.java:48)
at bndtools.Plugin.start(Plugin.java:71)
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)
... 79 more

-runbundles should be validated before running

The list of bundles to run in the bnd/bndrun file should be validated before running. If some bundle is missing (not in workspace/repository) or the version cannot be resolved (f.e. snapshot), this should trigger an user error and not run.

Use OBR for resolving buildpath + run path

OBR seems to be gaining traction in OSGi. Several members are using it now. Paremus will take on the RFC. It might be interesting to start using OBR to help resolve the buildpath and the runpath to take the pain out of the dependencies.

NPE in Import-Package details editor panel

java.lang.NullPointerException
at bndtools.editor.pkgpatterns.PkgPatternsDetailsPage$2.modifyText(PkgPatternsDetailsPage.java:127)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:173)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1076)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
at org.eclipse.swt.widgets.Text.wmCommandChild(Text.java:2526)
at org.eclipse.swt.widgets.Control.WM_COMMAND(Control.java:4296)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2362)
at org.eclipse.swt.widgets.Text.callWindowProc(Text.java:255)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4250)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2170)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3156)
at org.eclipse.swt.widgets.Text.paste(Text.java:1332)
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.ui.internal.handlers.WidgetMethodHandler.execute(WidgetMethodHandler.java:151)
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.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508)
at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123)
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:1051)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1076)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1102)
at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1427)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1098)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1507)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4267)
at org.eclipse.swt.widgets.Text.WM_CHAR(Text.java:2175)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4159)
at org.eclipse.swt.widgets.Text.windowProc(Text.java:2170)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
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(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:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)

build.bnd editor

Would be REALLY nice to have an editor for cnf/build.bnd ...There are quite a few workspace options that can be set.

Support Virgo

The requirement is to launch Virgo instead of Equinox and then to install application bundles in the Virgo user region rather than in the parent framework.

NPE in imports/exports view

java.lang.NullPointerException
at bndtools.views.ImportsExportsView$7.done(ImportsExportsView.java:300)
at org.eclipse.core.internal.jobs.JobListeners$3.notify(JobListeners.java:39)
at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:112)
at org.eclipse.core.internal.jobs.JobListeners.done(JobListeners.java:152)
at org.eclipse.core.internal.jobs.JobManager.cancel(JobManager.java:324)
at org.eclipse.core.internal.jobs.InternalJob.cancel(InternalJob.java:187)
at org.eclipse.core.runtime.jobs.Job.cancel(Job.java:195)
at bndtools.views.ImportsExportsView.executeAnalysis(ImportsExportsView.java:291)
at bndtools.views.ImportsExportsView$1.partActivated(ImportsExportsView.java:100)
at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:72)
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.PartListenerList.fireEvent(PartListenerList.java:57)
at org.eclipse.ui.internal.PartListenerList.firePartActivated(PartListenerList.java:70)
at org.eclipse.ui.internal.PartService.firePartActivated(PartService.java:187)
at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:306)
at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:57)
at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:136)
at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3537)
at org.eclipse.ui.internal.WorkbenchPage.internalActivate(WorkbenchPage.java:617)
at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:589)
at org.eclipse.ui.internal.WorkbenchPage.makeActive(WorkbenchPage.java:1250)
at org.eclipse.ui.internal.WorkbenchPage.updateActivePart(WorkbenchPage.java:1230)
at org.eclipse.ui.internal.WorkbenchPage.handleDeferredEvents(WorkbenchPage.java:1421)
at org.eclipse.ui.internal.WorkbenchPage.deferUpdates(WorkbenchPage.java:1410)
at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:1384)
at org.eclipse.ui.internal.WorkbenchPage.closeEditor(WorkbenchPage.java:1439)
at org.eclipse.ui.internal.EditorPane.doHide(EditorPane.java:61)
at org.eclipse.ui.internal.PartStack.close(PartStack.java:541)
at org.eclipse.ui.internal.EditorStack.close(EditorStack.java:206)
at org.eclipse.ui.internal.PartStack$1.close(PartStack.java:120)
at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:83)
at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:269)
at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:278)
at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1)
at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$1.closeButtonPressed(DefaultTabFolder.java:71)
at org.eclipse.ui.internal.presentations.PaneFolder.notifyCloseListeners(PaneFolder.java:631)
at org.eclipse.ui.internal.presentations.PaneFolder$3.close(PaneFolder.java:206)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1595)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:261)
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:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
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(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:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)

Welcome Page Failure

On Ubuntu 10.4, and eclipse-rcp-sr clean install, plus clean install of bndtools.

Attempt to create a cnf project on the welcome screen failed with the following stack-trace:

java.lang.NoClassDefFoundError: org/eclipse/ui/actions/WorkspaceModifyOperation
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.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 bndtools.wizards.workspace.CnfSetupWizard.performFinish(CnfSetupWizard.java:107)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:811)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:430)
.....

Unhandled event loop exception

On Eclipse 3.6 Plug-in development version, when creating a project first time, during the "Create Bnd Configuration Project" screen I get the error with stack trace that follows.

Note - that I also get the following warning (without stack trace):
"NLS unused message: InitialiseCnfProjectIntroWizardPage_warningNoMoreChecks in: bndtools.wizards.workspace.messages"

And here is the error's stack trace:

    java.lang.NoClassDefFoundError: org/eclipse/ui/actions/WorkspaceModifyOperation
    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 bndtools.wizards.workspace.CnfSetupWizard.performFinish(CnfSetupWizard.java:107)
    at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:811)
    at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:430)
    at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
    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:1053)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    at org.eclipse.jface.window.Window.open(Window.java:801)
    at bndtools.wizards.workspace.CnfSetupWizard$1.run(CnfSetupWizard.java:57)
    at bndtools.utils.SWTConcurrencyUtil.execForDisplay(SWTConcurrencyUtil.java:20)
    at bndtools.wizards.workspace.CnfSetupWizard.showIfNeeded(CnfSetupWizard.java:44)
    at bndtools.wizards.workspace.CnfSetupStartupParticipant.run(CnfSetupStartupParticipant.java:6)
    at bndtools.Plugin.runStartupParticipants(Plugin.java:100)
    at bndtools.Plugin.start(Plugin.java:82)
    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(Unknown Source)
    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.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:267)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:263)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardElement.createExecutableExtension(WorkbenchWizardElement.java:120)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardElement.createWizard(WorkbenchWizardElement.java:264)
    at org.eclipse.ui.internal.dialogs.NewWizardNewPage$5.createWizard(NewWizardNewPage.java:728)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$2.run(WorkbenchWizardNode.java:151)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardNode$1.run(WorkbenchWizardNode.java:135)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardNode.getWizard(WorkbenchWizardNode.java:132)
    at org.eclipse.jface.wizard.WizardSelectionPage.getNextPage(WizardSelectionPage.java:104)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardSelectionPage.getNextPage(WorkbenchWizardSelectionPage.java:100)
    at org.eclipse.ui.internal.dialogs.NewWizardSelectionPage.advanceToNextPageOrFinish(NewWizardSelectionPage.java:71)
    at org.eclipse.ui.internal.dialogs.NewWizardNewPage$1.doubleClick(NewWizardNewPage.java:354)
    at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:824)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
    at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:822)
    at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1421)
    at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1225)
    at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:238)
    at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:235)
    at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:296)
    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:4066)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    at org.eclipse.jface.window.Window.open(Window.java:801)
    at org.eclipse.ui.actions.NewProjectAction.run(NewProjectAction.java:117)
    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:1053)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
    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(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: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.ui.actions.WorkspaceModifyOperation
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:460)
    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)
    ... 118 more

    Session data:
    eclipse.buildId=M20100909-0800
    java.version=1.6.0_21
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
    Framework arguments:  -product org.eclipse.epp.package.rcp.product
    Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.rcp.product

Special support for API packages

API packages require careful versioning. Would it be possible to mark certain packages in the that they are (service) API? Any changes to these packages should automatically bump versions. Maybe we can connect such a package to a baseline. I could then compare the APIs in bnd to verify any decision regarding versions. Maybe a warning or error could stick on the packageinfo file when the API version violates the baseline. Not important but kind of really OSGi-ish and relevant for large projects.

Builds too often during debugging

Using bndtools to debug some code I find it awkward that on every safe the bundles are build. I think a build should only start when there are no compile errors. Second, Eclipse is really good in making hot code fixes but they get immediately overwritten by a new build of the bundle

Activator check if it is included does not take wildcards into account

When the activator is checked if it is included it adds a package that is already included by the wildcard. E.g. Private-Package=com.example.*, bndtools adds com.example for com.example.Activator. There is a method in Builder that you can ask if it is included and of course bnd will verify the activator's existence anyway.

Create wizard to switch from PDE

"Convert to BND tools" on a PDE project

  • get required manifest headers from the PDE manifest (symbolic-name, bundle-name, export-packages, etc)
  • run bnd against current target platform
    (1) find bundles not currently in the cnf / bnd platform and automatically add them
    (2) warn about unused bundle imports (comparing bnd output + current manifest) and ask the user if she wants to keep them
    (3) make sure DS components definitions are still accounted for (option to convert them to bnd annotations would be awesome)
  • remove PDE nature, builders, add Bndtools builder
  • Become mentally sane again.

Some bundles would still be missing in the target platform of course (implementations we don't depend on, etc). Another wizard should do be dedicated target platform conversion ;).

I think features to convert the manage the build should be separate (e.g, switch from tycho to maven-osgi-plugin)

I have too many bundles so I won't be doing this manually anytime soon (also, converting the target platform is a hassle) but this would be an awesome feature.

refactoring package names

When refactoring package names in eclipse the bundle context in the bnd file isn't updated.
I.e. when renaming package so.short.package.name (which is used in the private packages of the bundle content) to so.long.package.name the bnd-files aren't updated at all (and thus the bnd files are incorrect)
(At least, this occured when using sub-bundles...)

Error message for missing @Reference method argument

If you forget to specify an argument for an @reference method, f.e.

@Reference
public void setAuctionService() {

}

The error message in the bnd.bnd is:

Service-ComponentInvalid Service-Component header: * {}, throws java.lang.IllegalArgumentException: Cannot detect the type of a Component Reference from the descriptor: ()V

This marker should go to the annotation and not to the bnd file.

Possible race condition in launch?

Got an error during startup that might indicate a race condition. After starting up with all level enabled it worked but this could indicate a timing problem?

[WARNING] unavailable
java.lang.IllegalStateException: Can only register services while bundle is active or activating.
at org.apache.felix.framework.Felix.registerService(Felix.java:2734)
at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
at org.apache.felix.http.base.internal.HttpServiceController.register(HttpServiceController.java:64)
at org.apache.felix.http.base.internal.DispatcherServlet.init(DispatcherServlet.java:41)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:145)
at org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:112)
at org.apache.felix.http.jetty.internal.JettyService.run(JettyService.java:203)
at java.lang.Thread.run(Thread.java:637)
[INFO] Started jetty 6.1.x at port 8080

Framework selection

I think the framework should by default be selected from the build.bnd file so you share the same framework in all projects in your workspace. In VERY special cases you could override it. Would be nice to have an out of the box default.

You now detect that the framework is not set, there is a message, but it does not contain a bundle that jumps to the dialog

Provided service allows selection, but does not stick.

Using bnd.bnd Components tab. I create the ServiceComponent and it shows up in components with a C icon. Then I click on + of Provided Services and get the Add service interface dialog. Then I enter "App" and code completion comes up with the list including the one I want, Application - com.vaadin. Then I click OK. Nothing is added to the provided services box and there is no error message.
I have Service Factory checked. Calculated imports shows com.vaadin & com.vaadin.ui.

I presume the program is not happy with something but it should give some kind of error message if that is the case.

Just before this I made one other bundle containing two components with no problem.

Releasing bundles does not work if you have never specified a bundle version

I was trying to release a bundle multiple times that had no bundle version filled out in its manifest initially. Even though the semantic version analysis for the bundle and its packages works nicely, the actual deployment of the new bundle to the repository fails. Filling out a bundle version resolves this (so that's the workaround for now).

Exception when dropping a component

Got this exception when I dropped a component Java class from the navigator on the component table

java.lang.IllegalArgumentException: Index out of bounds
at org.eclipse.swt.SWT.error(SWT.java:3865)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at org.eclipse.swt.SWT.error(SWT.java:3770)
at org.eclipse.swt.widgets.Widget.error(Widget.java:619)
at org.eclipse.swt.widgets.Table.getItem(Table.java:1420)
at org.eclipse.swt.dnd.DropTargetEffect.getItem(DropTargetEffect.java:107)
at org.eclipse.swt.dnd.DropTargetEffect.getItem(DropTargetEffect.java:90)
at org.eclipse.swt.dnd.DropTarget.setEventData(DropTarget.java:873)
at org.eclipse.swt.dnd.DropTarget.draggingEntered(DropTarget.java:216)
at org.eclipse.swt.dnd.DropTarget.dropTargetProc(DropTarget.java:428)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:202)
at org.eclipse.swt.widgets.Widget.mouseDown(Widget.java:920)
at org.eclipse.swt.widgets.Control.mouseDown(Control.java:2151)
at org.eclipse.swt.widgets.Tree.mouseDown(Tree.java:1914)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4653)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:202)
at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:1753)
at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:1825)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4713)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4285)
at org.eclipse.swt.widgets.Display.applicationProc(Display.java:4352)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:101)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3097)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
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(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:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)

Launching problem

When I try to launch I get this error in the log:
java.lang.ClassNotFoundException: aQute.bnd.junit.OSGiJUnitLaunchShortcut
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(ClassLoader.java:250)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:326)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1193)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:160)
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.debug.internal.ui.launchConfigurations.LaunchShortcutExtension.getDelegate(LaunchShortcutExtension.java:410)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension.getLaunchConfigurations(LaunchShortcutExtension.java:505)
at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager.getParticipatingLaunchConfigurations(LaunchingResourceManager.java:473)
at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager.getLabel(LaunchingResourceManager.java:307)
at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager.computeLabels(LaunchingResourceManager.java:228)
at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager$2.run(LaunchingResourceManager.java:138)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Any idea?

Exported packages from embedded jars are not exposed to Eclipse compiler

Scenario:

  • we have a bundle (say, 'embedder') with an embedded jar, that jar is on the Bundle-ClassPath, and one of its packages is in the ExportPackage.
  • another BndOsgi project (say, 'user') has this bundle on its -classpath .

Now, classes in the 'user' project cannot 'see' classes from the embedded jar in 'embedder'; the Eclipse compiler cannot find these classes.

There is a workaround: putting the embedded jar explicitly on the project's Build Path solves the compilation problem.

Wait before updating bundles

When the launcher updates the bundles it should ensure that no changes are taking place in the jAR file. I see quite often zip exceptions.

Using file paths instead of '/' paths

From: RayN

Actually, I found out this error while trying to figure out why bndtools (from njbartlett) wasn't generating the jars while I was changing their java source.

In bndtools () we have:
Class bndtools.builder.BndIncrementalBuilder
.
.
.
} else if(builder.isInScope(affectedFiles)) {
rebuild = true;
break;
}
.
.
.
Which in turn calls:
Class aQute.lib.osgi.Builder
.
.
.
String pack = Clazz.getPackage(cpEntry);
.
.
.
Which in turn calls:
Class aQute.lib.osgi.Clazz
.
.
.
return clazz.substring(0, n).replace('', '.');
.
.
.
The result of this command is not windows compatible. Because at Builder.class we have:
String pack = Clazz.getPackage(cpEntry);
Instruction i = matches(instructions, pack, null);
if (i != null)
return !i.isNegated();

The variable "i" is always returning null

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.