GithubHelp home page GithubHelp logo

eclipse.pde's Introduction

Eclipse PDE - Plug-in Development Environment

Thanks for your interest in this project.

Project description:

The PDE project the Eclipse tooling to develop plug-ins and OSGI bundles.
Website: https://www.eclipse.org/pde/

How to contribute:

Contributions to PDE are most welcome. There are many ways to contribute, from entering high quality bug reports, to contributing code or documentation changes. For a complete guide, see the CONTRIBUTING page on the team wiki.

Create Eclipse Development Environment for PDE

Developer resources:

Information regarding source code management, builds, coding standards, and more.

Contributor License Agreement:

Before your contribution can be accepted by the project, you need to create and electronically sign the Eclipse Foundation Contributor License Agreement (CLA).

How to build on the command line

You need Maven 3.3.1 or later installed. Then you can run the build via the following command:

mvn clean verify

Contact:

Contact the project developers via Github discussions

License

Eclipse Public License (EPL) v2.0

Support us with processing power

If your Organizations is an Eclipse Member you can help us by sponsoring one of the included resource packs to speed up builds. Organizations can check how many Resource Packs they have left for project sponsoring on the membership portal.

The following Organizations support PDE getting processing power for their builds:

  • Eclipse Foundation - host our CI Infrastructure, become a friend of Eclipse and support the Eclipse Foundation in general
  • SAP SE - sponsors two resource packs with 2 CPU / 8 GB RAM each

eclipse.pde's People

Contributors

akurtakov avatar beckerwdf avatar briandealwis avatar cwindatt avatar eclipse-releng-bot avatar ecljpseb0t avatar flamenco avatar hanneswell avatar iloveeclipse avatar joneshelming avatar julianjho avatar laeubi avatar lshanmug avatar merks avatar mickaelistria avatar mkarpisek avatar mkeller avatar mrennie avatar niraj-modi avatar noopur2507 avatar opcoach avatar paulweb515 avatar pnehrer avatar ruspl-afed avatar sopotc avatar sravanlakkimsetti avatar tomsontom avatar vik-chand avatar vogella avatar wimjongman avatar

Stargazers

 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

eclipse.pde's Issues

testPublishAndRunSimpleProduct fails since I20220503-1930

Probably related to pde.build repo merged into pde repo.

The following error occurred while executing this line: /Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/build.xml:94: The following error occurred while executing this line: /Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/templates/headless-build/customTargets.xml:13: The following error occurred while executing this line: /Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/productBuild/allElements.xml:23: The following error occurred while executing this line: /Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/genericTargets.xml:112: Processing inclusion from feature org.eclipse.pde.build.container.feature: Bundle headless_1.0.0 failed to resolve.: Missing required plug-in org.eclipse.core.runtime_0.0.0.

/Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/productBuild/productBuild.xml:45: The following error occurred while executing this line:
/Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/build.xml:94: The following error occurred while executing this line:
/Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/templates/headless-build/customTargets.xml:13: The following error occurred while executing this line:
/Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/productBuild/allElements.xml:23: The following error occurred while executing this line:
/Users/genie.releng/workspace/ep424I-unit-mac64-java17/workarea/I20220503-1930/eclipse-testing/test-eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.pde.build_3.11.200.v20220503-0921/scripts/genericTargets.xml:112: Processing inclusion from feature org.eclipse.pde.build.container.feature: Bundle headless_1.0.0 failed to resolve.:
Missing required plug-in org.eclipse.core.runtime_0.0.0.

at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:582)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440)
at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)

NPE when selecting feature in "Open Plug-in Artifact" menu

From https://bugs.eclipse.org/bugs/show_bug.cgi?id=579685
"Trying to access a feature that has been derived from workspace resources (e.g. a pom-derived feature that is contributed via m2e) in the "Open Plug-in Artifact" menu fails with a NPE.

Seemingly because JFace tries to load an image for this artifact using IFeatureModel#getInstallLocation, without considering potential null values.

Attached is a stacktrace."

java.lang.NullPointerException
at java.base/java.io.File.(File.java:278)
at org.eclipse.pde.internal.ui.search.dialogs.FilteredPluginArtifactsSelectionDialog$DetailedLabelProvider.getImage(FilteredPluginArtifactsSelectionDialog.java:211)
at org.eclipse.pde.internal.ui.search.dialogs.FilteredPluginArtifactsSelectionDialog$DetailedLabelProvider.getImage(FilteredPluginArtifactsSelectionDialog.java:181)
at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$DetailsContentViewer.refresh(FilteredItemsSelectionDialog.java:2882)
at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$DetailsContentViewer.inputChanged(FilteredItemsSelectionDialog.java:2855)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)

Make AddBuildEntryResolution as a multi-fix

From https://bugs.eclipse.org/bugs/show_bug.cgi?id=577144

"From Michael Keppler:

"org.eclipse.pde.internal.ui.correction.AddBuildEntryResolution.createChange(Build) two members of the quick fix class are overridden by some information from the marker. Since there are 2 different quick fixes (add source.., add src.exclude) for the same kind of marker, this cannot work. It basically makes the second kind of quick fix the same as the first one."

So to make this as multifix, some other strategy should be used."

Migrate pde.ds to 'org.osgi.service.component.annotations' from Maven-Central

In eclipse-equinox/equinox#18 o.e.osgi.services is migrated from embedding the sources of the osgi package org.osgi.service.component.annotations to use the osgi-bundles published to Maven-Central.

The OSGi-bundle org.osgi.service.component.annotations published to Maven-Central is designed to not resolve at runtime (see eclipse-equinox/equinox#18). Therefore and because the contained annotations are designed to be used at compile-time only Plug-ins should not import the package (or worse require the containing bundle).
PDE DS offers to add the annotations implicitly to the classpath to make the compilation in the IDE work.
In the past Tycho did not support this. But @laeubi changed this recently for the upcoming Tycho-3: https://github.com/eclipse/tycho/blob/master/RELEASE_NOTES.md#support-for-pde-declarative-component-annotation-progressing

One (or the only) workaround was/is to import the package org.osgi.service.component.annotations in a Plug-in that uses DS. This worked because the package was supplied by o.e.osgi.services. But since o.e.osgi.services is about to be deprecated for removal (see eclipse-equinox/equinox#18) and the part relevant for DS is replaced by org.osgi.service.component.annotations (which does not resolve so we cannot add it at runtime or to a TP) we should make sure that the mentioned package is not imported anymore. Consequently the PDE-DS builder should mark the import of that package as an error encouraging the user to remove it (best with some explanation).
See also eclipse-equinox/equinox#18, eclipse-equinox/equinox#18, eclipse-equinox/equinox#18 and subsequent.

Besides I would like to check if the org.eclipse.pde.ds.annotations and its sub-plug-ins org.eclipse.pde.ds.lib and org.eclipse.pde.ds1_2.lib can be replaced or at least simplify using 'org.osgi.service.component.annotations' from Maven-Central.
As part of this work the annotation package can be updated to the latest versions as suggested in eclipse-equinox/equinox.framework#36.

Incorrect Plug-in validation for feature based product

In APP4MC we created a feature based product. It is actually an Eclipse IDE with several custom plug-ins for Amalthea Model editing and additional plug-ins. We have integrated all plug-ins that are necessary via features. But if we start the product via PDE launcher we get a validation error:

Missing Constraint: Import-Package: org.apache.commons.logging; version="[1.2.0,1.3.0)"

But the plug-in org.apache.commons.logging in version 1.2.0 from Orbit is included in one of the features. After skipping the validation error dialog and starting the product, everything works, the plug-ins for which the error is shown are either RESOLVED or even STARTED. Also the Tycho build works without an error. So for me it looks like the validation is incorrect. Not sure where to look for this.

The repository with the project sources are here:
https://git.eclipse.org/c/app4mc/org.eclipse.app4mc.git/tree/?h=develop

The product definition is in releng/org.eclipse.app4mc.platform.product

Add "Service-Components" tab to MANIFEST.MF editor?

I'm always trying to find looking in the PDE editor for MANIFEST.MF a tab where are the services shown, and every time I realize there is nothing. Why? Shouldn't we add "Service-Components" tab with a list of component xml files under OSGI-INF directory and might be a button "add new component" that would call the "Component Definition wizard"?

Just an idea, probably easy to implement.

Remove "Compute" Dependencies/ "Recompute when feature plugins change" Buttons from Feature-Editor

Adding Plug-ins required by included Plug-ins of a Feature as requirements to a Feature (by clicking the Compute in the the Dependencies tab) in the Feature-Editor is not necessary. P2/Tycho respectively PDE can derive them from the specifying Plug-ins. Consequently those requirements are just a duplicates, in the best case.

In the worst case the those requirements lead to resolution problems due to conflicting and unclear and/or outdated dependencies.
Furthermore it is not clear to users if and when they should use the "Compute" Requirements button, so they likely often use it needlessly (at least I did it until I learned it is unnecessary).
Besides that the "Recompute when feature plugins change" check-box seems not to work properly because its state seems not to be persisted correctly.

Therefore the "Compute" Requirements / "Recompute when feature plugins change" should be removed entirely without replacement.
This was first suggested in #26.

NPE when editing MANIFEST.MF

it's logged to console:

!ENTRY org.eclipse.jface.text 4 2 2022-05-09 11:08:42.126
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface.text".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:224)
	at org.eclipse.jface.resource.ImageRegistry.<init>(ImageRegistry.java:150)
	at org.eclipse.jface.resource.ImageRegistry.<init>(ImageRegistry.java:122)
	at org.eclipse.pde.internal.ui.PDEPluginImages.initialize(PDEPluginImages.java:325)
	at org.eclipse.pde.internal.ui.PDEPluginImages.get(PDEPluginImages.java:319)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.getImage(ManifestContentAssistProcessor.java:791)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.addPackageCompletions(ManifestContentAssistProcessor.java:696)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.handleExportPackageCompletion(ManifestContentAssistProcessor.java:448)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.computeValue(ManifestContentAssistProcessor.java:215)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.computeCompletionProposals(ManifestContentAssistProcessor.java:165)
	at org.eclipse.pde.internal.ui.editor.contentassist.ManifestContentAssistProcessor.computeCompletionProposals(ManifestContentAssistProcessor.java:97)
	at org.eclipse.jface.text.contentassist.AsyncCompletionProposalPopup.lambda$10(AsyncCompletionProposalPopup.java:352)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.text.contentassist.AsyncCompletionProposalPopup.lambda$9(AsyncCompletionProposalPopup.java:351)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

in a backgroundthread there is no Display.getCurrent()

Exceptions thrown by IUBundleContainer.cacheIUs and recorded by IUBundleContainer.synchronizerChanged are lost

In this debug session you can see that the resolve method expects exceptions to be thrown and records those in the multi-status in the catch clause below the selected new logic that I've added:

image

But the exception thrown by IUBundleContainer.cacheIUs

image

Is recorded

image

So we should check the status of each container for this recorded status and record it the same was as if it were thrown as is done by the selected logic in the first picture.

Overhaul the feature editor

The usage and meaning of features has recently cause a lot of confusion, for that reason I'd like to suggest an overhaul of the feature-editor to reflect today realities:

  1. Included Plugins/Included Features Tab: according to @mickaelistria these are actually obsolete and could be expressed by "Dependencies" in a much more flexible and consistent way
  2. Dependencies are actually misleading, as P2 always installs all required transitive dependencies (@merks @mickaelistria correct?) it is rather useless to specify anything here as a "Plugin Dependency", what one actually does here is express a "Restriction" or "Additional Requirement" that can't be expressed in a Plugin itself (e.g. a fragment))
  3. eclipse-tycho/tycho#876 shows that the information is actually even duplicated between 1+2 most probably as a side-effect of the "Compute" / "Recompute when feature plugins change" function
  4. The help states that

The Dependencies page lists all Required Features and Plug-ins that must be present in the product before the feature can be installed. If any of these pre-requisites are missing, the feature will not be installed.

what is actually not true according to @mickaelistria, also @HannesWell recently has added support for PDE behaving the same as P2 when using "adding additional requirements" to a product launch.

My suggestion would be the following to make this more clear and consistent to the user:

  1. remove the "Included Plugins/Included Features Tab" and convert any feature.xml upon saving into equivalent import plugin/feature items
  2. remove "Compute" / "Recompute when feature plugins change"
  3. rename "Dependencies" to "Content" or "Features and Bundles"
  4. Update the Help to reflect how features actually work

There is only one thing currently not possible, that is to express an optional/os dependent feature but that information seems to be duplicated as well as a feature already carries information about OS and a like, as well as a plugin can define a platform filter and express if it is to be packaed/unpackked.

org.eclipse.osgi requirement is not added for subclasses of EquinoxLaunchConfiguration

Before the change https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/186860, the org.eclipse.osgi requirement was added automatically to all subclasses of EquinoxLaunchConfiguration. Now this needs to be added manually for every launcher type like:

static {
   RequirementHelper.registerSameRequirementsAsFor( "org.eclipse.rap.ui.launch.RAPLauncher", //$NON-NLS-1$
       IPDELauncherConstants.OSGI_CONFIGURATION_TYPE );
}

The problem here is that RequirementHelper class is internal.

java.lang.Exception: The resource tree is locked for modifications.

I don't remember what exactly i did (something like open/closing project), just found it in my logfile. Maybe somebody can see in exception whats wrong?
java.lang.Exception: The resource tree is locked for modifications.

	at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42)
	at org.eclipse.core.internal.resources.ResourceException.<init>(ResourceException.java:38)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:122)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2324)
	at org.eclipse.core.internal.resources.File.create(File.java:108)
	at org.eclipse.core.internal.resources.File.create(File.java:181)
	at org.eclipse.pde.internal.core.SearchablePluginsManager.saveStates(SearchablePluginsManager.java:427)
	at org.eclipse.pde.internal.core.SearchablePluginsManager.resetContainer(SearchablePluginsManager.java:360)
	at org.eclipse.pde.internal.core.SearchablePluginsManager.modelsChanged(SearchablePluginsManager.java:376)
	at org.eclipse.pde.internal.core.PluginModelManager.fireDelta(PluginModelManager.java:399)
	at org.eclipse.pde.internal.core.PluginModelManager.modelsChanged(PluginModelManager.java:297)
	at org.eclipse.pde.internal.core.AbstractModelManager.fireModelProviderEvent(AbstractModelManager.java:37)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.createAndFireEvent(WorkspaceModelManager.java:283)
	at org.eclipse.pde.internal.core.WorkspacePluginModelManager.createAndFireEvent(WorkspacePluginModelManager.java:552)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:262)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.processModelChanges(WorkspaceModelManager.java:220)
	at org.eclipse.pde.internal.core.WorkspacePluginModelManager.processModelChanges(WorkspacePluginModelManager.java:541)
	at org.eclipse.pde.internal.core.WorkspaceModelManager.resourceChanged(WorkspaceModelManager.java:144)
	at org.eclipse.jdt.internal.core.DeltaProcessingState$1.run(DeltaProcessingState.java:496)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:489)
	at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:307)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:297)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:160)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:385)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1509)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:49)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Run as Plug-in test still adds the fragments to the runtime which are invalid for the platform

I'm currently helping a bit with WindowBuilder trying to cleanup the repo and to activate more tests.

If I open org.eclipse.wb.tests.utils.CommonTests and run it as plug-ins tests I see the following errors:

org.osgi.framework.BundleException: Could not resolve module: org.eclipse.wb.os.linux [278]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(& (osgi.ws=gtk) (osgi.os=linux))"

at org.eclipse.osgi.container.Module.start(Module.java:463)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.lambda$1(ModuleContainer.java:1834)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1829)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1775)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1739)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:228)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:339)

!ENTRY org.eclipse.wb.os.macosx 4 0 2022-05-03 15:13:27.816
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.wb.os.macosx [279]
Unresolved requirement: Require-Capability: eclipse.platform; filter:="(osgi.os=macosx)"

at org.eclipse.osgi.container.Module.start(Module.java:463)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.lambda$1(ModuleContainer.java:1834)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1829)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1775)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1739)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:228)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:339)

Is that expected? I thought @HannesWell implemented filtering for fragments which are do not fit to the selected platform.

improve org.eclipse.pde.internal.core.ClasspathUtilCore.getPath(IPluginModelBase, String) performance

a) During eclipse startup with many external libraries i see some seconds spend in ClasspathUtilCore.getPath
image

There is a simple improvement possible:
instead of
if (file.exists() && file.isAbsolute())

use the inverse order:

if (file.isAbsolute() && file.exists())

since file.exists is an costly IO operation while isAbsolute() is only fast textual evaluation ("starts with slash?").
Thats not much overall but since it's so cheep to improve ... would you please ... "src.zip" is never an absolute filename!

b) A more highlevel problem is that we have a lot projects which all reference the same external libraries (like plugins\org.eclipse.core.runtime_3.24.0.v20210910-0750.jar). Kinda bad that this "exits" checks are done over and over for the same file.

c) the file "org.eclipse.osgi_3.17.100.v20211104-1730.jar\src.zip" will also never exist.... because that "jar" is not an directory but an archive... i guess pde does somewhere know its not a "dir" shaped bundle. - i just do not know where that information is stored.

Stacktrace is for example:

        at org.eclipse.pde.internal.core.ClasspathUtilCore.getPath(ClasspathUtilCore.java:220)
        at org.eclipse.pde.internal.core.ClasspathUtilCore.getSourceAnnotation(ClasspathUtilCore.java:186)
        at org.eclipse.pde.internal.core.PDEClasspathContainer.addExternalPlugin(PDEClasspathContainer.java:80)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addPlugin(RequiredPluginsClasspathContainer.java:352)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:297)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:309)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.addDependency(RequiredPluginsClasspathContainer.java:280)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.computePluginEntries(RequiredPluginsClasspathContainer.java:162)
        at org.eclipse.pde.internal.core.RequiredPluginsClasspathContainer.getClasspathEntries(RequiredPluginsClasspathContainer.java:112)
        at org.eclipse.jdt.internal.core.JavaModelManager.containerPutIfInitializingWithSameEntries(JavaModelManager.java:780)

Inappropriate validation error about a missing java package that is in fact available in the JDK

I was attempting to reproduce the problem described in this forum post:

https://www.eclipse.org/forums/index.php/mv/msg/1110468/

When one tries to launch the product generated for an RCP template (as detailed in the forum post), or when one invokes "Validate Plug-ins" from the Plug-ins tab, PDE complains like this:

image

But you can see that I have javax.xml.stream.StreamFilter open in an editor and you can see in the breadcrumbs that it comes from the my installed Java 11 JDK. So clearly the package exists.

[API-Tools] Support Feature projects

At the moment PDE's API-Tools only work for Plug-in projects.
I would like to discuss to support Feature project's too.

The PDE-API tools could detect:

  • Addition of new (transitively) included Plug-ins and Features -> Requires minor-version bump
  • Removal of (transitively) included Plug-ins and Features -> Requires major-version bump
  • Micro-Version bump of (transitively) included Plug-ins and Features -> Requires micro-version bump
  • Removal/Additions of requirements/dependencies -> Requires micro-version bump?
  • Change in supported environment -> Following the SemVer intention I think it would be widening requires minor-version bump, narrowing requires major-version bump?

There could be more scenarios to handle and suggested version-bump actions maybe have to be adjusted.
Do you think it is necessary to detect environment changes? I don't think the API tools detect changes for example in the BREE of a plug-in?

Missing version bumps of features can be already detected during the build by the tycho-p2-extras:compare-version-with-baselines Mojo (I'm not sure if it checks the segment) but it would be nice to have that check in the IDE too.

Unable to load p2 dependencies from nested target files

I'm currently trying to create a modular target file where I use a base file, which is shared among all projects, and then add additional dependencies for each project individually.
However, I noticed that there seems to be issues resolving p2 dependencies from the base file.
Example:
image

Both nested target files are identical and contain log4j, once referenced via the Orbit update site and once via Maven Central. The only difference is that one is named child.target, while the other is named nested.target.
Child1/2:
image

Those errors also show up on the latest integration build for 4.24.

Split API from implementation

currently there is a bundle org.eclipse.pde.core that contains API and implementation and even ant-task stuff.

That makes it quite hard to sue PDE api in other context without pulling in much dependencies. It would be good to have a new org.eclipse.pde containing all public API. bundles that previously contained that API could require bundle the new bundle and use the visibility = reexport.

That way bundles currently requiring such a now splitted bundle will not need to change, bundles using import-package won't notice this anyways.

Bug 579742 Unable to start Eclipse application from older target platform since 2022-03 due to security manager issue

As part of bug #575210, a PDE launch configuration automatically adds -Djava.security.manager=allow to the command line as soon as the target JRE is Java 17. However, this breaks launching Eclipse applications that are based on an older version of Eclipse (such as 2021-03) because they try to load the class "allow" for the security manager but that obviously doesn't exist (org.eclipse.osgi.internal.framework.SystemBundleActivator.installSecurityManager(EquinoxConfiguration)):

org.osgi.framework.BundleException: Exception in org.eclipse.osgi.internal.framework.SystemBundleActivator.start() of bundle org.eclipse.osgi.
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:835)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:763)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1012)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.initWorker(EquinoxBundle.java:198)
at org.eclipse.osgi.container.SystemModule.init(SystemModule.java:99)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle.init(EquinoxBundle.java:281)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle.init(EquinoxBundle.java:265)
at org.eclipse.osgi.launch.Equinox.init(Equinox.java:204)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:316)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:251)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
at org.eclipse.equinox.launcher.Main.run(Main.java:1461)
at org.eclipse.equinox.launcher.Main.main(Main.java:1434)
Caused by: org.osgi.framework.BundleException: Failed to create security manager
at org.eclipse.osgi.internal.framework.SystemBundleActivator.installSecurityManager(SystemBundleActivator.java:157)
at org.eclipse.osgi.internal.framework.SystemBundleActivator.start(SystemBundleActivator.java:71)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:814)
at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:806)
... 17 more
Caused by: java.lang.ClassNotFoundException: allow
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at org.eclipse.osgi.internal.framework.SystemBundleActivator.installSecurityManager(SystemBundleActivator.java:154)
... 22 more

This is a regression because you are not able to use 2022-03 as your IDE while your target platform still uses an older version of the Eclipse framwork. This used to work until 2021-12.

Possible solutions:

  • In addition to the Java version also take the Eclipse framework version in the target platfrom into account before setting the security manager
  • Make it possible for the user to disable automatic adding of the security manager system property.
    [tag] [reply] [−]Comment 1

EquinoxLaunchConfiguration (RAP launcher) always fails with "The org.eclipse.osgi plug-in is missing from this configuration."

From: Bugzilla 579708 by @ifurnadjiev

RAP launcher (based on org.eclipse.pde.launching.EquinoxLaunchConfiguration) is broken after the change https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/186860

Before the change in org.eclipse.pde.launching.EquinoxLaunchConfiguration.preLaunchCheck(ILaunchConfiguration, ILaunch, IProgressMonitor) the missing OSGi bundle has been added to fModels and fAllBundles automatically. After the change the code:
if (!RequirementHelper.addApplicationLaunchRequirements(fModels, configuration)) {
throw new CoreException(Status.error(PDEMessages.EquinoxLaunchConfiguration_oldTarget));
}
always throws. For normal operation RequirementHelper.addApplicationLaunchRequirements returns false (as the missingRequirements there is false ).

For RAP launcher (RAP Tools) this issue is a blocker!

Test failure only on linux/Mac with java 11 (testProducts_productAddedToDerivedSourceFolder)

org.eclipse.pde.core.tests.internal.WorkspaceProductModelManagerTest testProducts_productAddedToDerivedSourceFolder Error N/A java.lang.NullPointerException at org.eclipse.pde.core.tests.internal.WorkspaceProductModelManagerTest.assertSingleProductWithId(WorkspaceProductModelManagerTest.java:151) at org.eclipse.pde.core.tests.internal.WorkspaceProductModelManagerTest.testProducts_productAddedToDerivedSourceFolder(WorkspaceProductModelManagerTest.java:87) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.eclipse.pde.ui.tests.runtime.TestUtils$1.evaluate(TestUtils.java:271) at org.junit.runners.ParentRu

Internal error exporting plug-ins or features

From https://bugs.eclipse.org/bugs/show_bug.cgi?id=579512#c0

Steps to recreate

  1. Create a plugin project
  2. In dependency add a java project with manifest file
  3. Try exporting this project
  4. You get
    java.lang.NullPointerException: element cannot be mapped to a null key
    at java.base/java.util.Objects.requireNonNull(Objects.java:233)
    at java.base/java.util.stream.Collectors.lambda$groupingBy$53(Collectors.java:1142)
    at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
    at org.eclipse.pde.internal.core.ClasspathHelper.getDevEntriesProperties(ClasspathHelper.java:75)

The Create target reference page doesn't work well on Windows

Attempting to use file:${project_loc:/<project-name>}/ results in a URI syntax error:

image

The logic implemented by org.eclipse.pde.internal.core.target.RemoteTargetHandle.get(String), which calls org.eclipse.pde.internal.core.target.RemoteTargetHandle.convertRawToUri(String) should be reused.

It would also be nice if the dialog simply listed the available *.target files in the workspace.

New 4.24 JDT feature to run JUnit5 failures first requires change to RemotePluginTestRunner

The new JDT feature to run failures first uses a MethodOrderer class that is specifed in org.eclipse.jdt.junit5.runtime. The building of the test plan eventually calls the junit engine which cannot find the class because it is not in the engines bundles nor is required by the user's test plug-in. To fix this, the bundle needs to be added for JUnit5 plug-in testing.

This fix is requested for 4.24 RC1.

This was originally opened as: eclipse-jdt/eclipse.jdt.ui#57

Add required plug-ins should filter out source bundles

Source-Bundles build by Tycho have a Eclipse-SourceBundle header in their MANIFEST and IIRC PDE requires that in order to be able to locate sources of bundles. This would be a reliable test that does not rely on naming conventions.

The "Add dependencies" dialog of PDE should use this information and do not offer source bundles to be added as MANIFEST.MF dependencies.

Build slow while MANIFEST.MF editor open

I have a MANIFEST.MF file open in the PDE Editor. Then i started Project/Clean/"Clean all Projects" in a big workspace. After that the progress was stuck for ~20min at 100% Cleaning all projects.
image

I see the open PDE editor is informed about every single ".class" file changed during the build "display.asyncExec"

 Thread [Worker-72: Cleaning all projects] (Suspended (breakpoint at line 234 in org.eclipse.pde.internal.ui.editor.context.InputContextManager)) 
 org.eclipse.pde.internal.ui.editor.plugin.PluginInputContextManager(org.eclipse.pde.internal.ui.editor.context.InputContextManager).asyncStructureChanged(org.eclipse.core.resources.IFile, boolean) line: 234 
 org.eclipse.pde.internal.ui.editor.plugin.PluginInputContextManager(org.eclipse.pde.internal.ui.editor.context.InputContextManager).lambda$0(org.eclipse.core.resources.IResourceDelta) line: 218  
 org.eclipse.pde.internal.ui.editor.context.InputContextManager$$Lambda$1254.1386710085.visit(org.eclipse.core.resources.IResourceDelta) line: not available  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 67  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor, int) line: 77  
 org.eclipse.core.internal.events.ResourceDelta.accept(org.eclipse.core.resources.IResourceDeltaVisitor) line: 51  
 org.eclipse.pde.internal.ui.editor.plugin.PluginInputContextManager(org.eclipse.pde.internal.ui.editor.context.InputContextManager).resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) line: 211  
 org.eclipse.core.internal.events.NotificationManager$1.run() line: 307
 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 45  
 org.eclipse.core.internal.events.NotificationManager.notify(org.eclipse.core.internal.events.ResourceChangeListenerList$ListenerEntry[], 
 org.eclipse.core.internal.events.ResourceChangeEvent, boolean) line: 297  org.eclipse.core.internal.events.NotificationManager.broadcastChanges(org.eclipse.core.internal.watson.ElementTree, 
 org.eclipse.core.internal.events.ResourceChangeEvent, boolean) line: 160  org.eclipse.core.internal.resources.Workspace.broadcastPostChange() line: 385  
 org.eclipse.core.internal.resources.Workspace.endOperation(org.eclipse.core.runtime.jobs.ISchedulingRule, boolean) line: 1509  
 org.eclipse.ui.internal.ide.dialogs.CleanDialog$1(org.eclipse.core.internal.resources.InternalWorkspaceJob).run(org.eclipse.core.runtime.IProgressMonitor) line: 49  
 org.eclipse.core.internal.jobs.Worker.run() line: 63  

DS Annotations processor updates the MANIFEST.MF file in a unfriendly way, in regards to a source versioning system.

The attached picture shows the result of a build. Nothing is changed in the source code, just the Eclipse version. On the right Eclipse Oxygen, on the left Eclipse 2022-03, both on Windows 10.

DSManifestCompare

The ServiceComponent manifest header has been moved inside the MANIFEST.MF file, but the header value is the same. So the diff tool shows a difference, but there are no semantic changes in the manifest.
Even if the ServiceComponent header value was not the same it would be better not to change the header position, but just update its content.

This is a general rule that should be applied while updating the MANIFEST.MF file.

This second picture shows that even in the case the ServiceComponent manifest header position is not changed, it is the order of the DS xml files that is changed after the build. On the left (Eclipse 2022-03) the order is alphabetical.

DSManifestCompare1

As a general rule the pre-existing order should be preserved.

I am using tycho to build my workspace from the command line but these changes appeared after a rebuild inside eclipse.

Test failure only on windows (testGetMergedBundleMap_requiredFeatureWithNoVersion)

org.eclipse.pde.ui.tests.launcher.FeatureBasedLaunchTest testGetMergedBundleMap_requiredFeatureWithNoVersion Error element cannot be mapped to a null key java.lang.NullPointerException: element cannot be mapped to a null key at java.base/java.util.Objects.requireNonNull(Objects.java:246) at java.base/java.util.stream.Collectors.lambda$groupingBy$53(Collectors.java:1127) at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.uti

Rename pde.ui repository to pde

pde.ui is a merge of pde.core and pde.ui. I suggest we rename the repo to eclipse.pde.

@vik-chand OK for you? This can be easily done by the foundation and Github will forward the old repo requests to the new one.

I did this with GEF classic without encountering any issues.

NoSuchElementException being thrown when showing old launch configs

I am trying to open and edit old launch configs with the latest Eclipse 4.24 M2 bits and pieces, but I am getting this exception and it looks like the selection of plugins on the "Plug-ins" tab is gone (the list is full of un-checked plugins), so there is some data getting lost here.

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.orElseThrow(Optional.java:377)
	at org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper.getSelectedModels(BundleLauncherHelper.java:435)
	at org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper.getBundleMap(BundleLauncherHelper.java:417)
	at org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper.getWorkspaceBundleMap(BundleLauncherHelper.java:380)
	at org.eclipse.pde.internal.launching.launcher.BundleLauncherHelper.getAllSelectedPluginBundles(BundleLauncherHelper.java:107)
	at org.eclipse.pde.internal.ui.launcher.PluginBlock.initializePluginsState(PluginBlock.java:91)
	at org.eclipse.pde.internal.ui.launcher.PluginBlock.initializeFrom(PluginBlock.java:61)
	at org.eclipse.pde.internal.ui.launcher.BlockAdapter.initializeFrom(BlockAdapter.java:66)
	at org.eclipse.pde.ui.launcher.PluginsTab.initializeFrom(PluginsTab.java:158)
	at org.eclipse.pde.ui.launcher.AbstractPDELaunchConfigurationTabGroup.lambda$0(AbstractPDELaunchConfigurationTabGroup.java:63)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.pde.ui.launcher.AbstractPDELaunchConfigurationTabGroup.initializeFrom(AbstractPDELaunchConfigurationTabGroup.java:55)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:182)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:868)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.lambda$4(LaunchConfigurationTabGroupViewer.java:728)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:743)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:675)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:655)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:1049)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.lambda$1(LaunchConfigurationsDialog.java:612)
	at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:821)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
	at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:818)
	at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1191)
	at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
	at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:284)
	at org.eclipse.jface.util.OpenStrategy$1.lambda$1(OpenStrategy.java:438)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4349)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3972)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
	at org.eclipse.jface.window.Window.open(Window.java:799)
	at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1238)
	at org.eclipse.debug.ui.DebugUITools.lambda$1(DebugUITools.java:630)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
	at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:636)
	at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:574)
	at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:85)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580)
	at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4608)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4394)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3970)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1467)

This is moved from https://bugs.eclipse.org/bugs/show_bug.cgi?id=579872

[launch config] issues when a filter is used in conjunction with the "Only show selected" checkbox.

The OSGi Framework launch configuration editor doesn’t work as expected when the filters are used in conjunction with the “Only show selected” checkbox.

To reproduce the problems, follow the steps below:

  1. Open a new workspace in Eclipse
  2. Select menu Run > Debug Configurations … and create a new OSGi Framework launch configuration. The brand new configuration by default will have all the Target Platform plugins selected.
  3. Uncheck the Target Platform checkbox in the Bundles view to unselect all the plugins.
  4. In the filter edit box type “p2” to filter all p2 plugins and select one of them, let say org.eclipse.equinox.p2.discovery.
  5. In the filter edit box type “scr” and select the “org.apache.felix.scr” plugin.
  6. Press button Apply to save the Launch configuration. You will need this saved version at step 15.
  7. Clear the filter edit box.
  8. Check the “Only show selected” checkbox. Only the plugin(s) selected at step 4 and 5 will be displayed.
  9. Type again “p2” in the filter. Only one plugin will be displayed.
  10. Uncheck “Only show selected”. The bundles list will display all the p2 plugins and all of them will be erroneously shown as ‘checked’. Wrong.
  11. Check “Only show selected”. Of course nothing will change because now all the p2 plugins are actually selected. Wrong.
  12. Clear the filter edit box. I should see the 2 selected plugins but, on the other hand, I will see only the org.eclipse.equinox.p2.discovery plugins. Wrong.
  13. Again uncheck the “Only show selected”. The whole target platform plugins will be selected in the editor. Wrong.
  14. Close the launch configuration without saving it.
  15. Reopen it
  16. Check the “Only show selected” checkbox. Only two plugins will be displayed.
  17. In the filter edit box type “aaaa”. No plugins will be displayed (this is correct).
  18. Clear the filter. No plugins will be displayed. Wrong.

I found these issues in Eclipse 2022-03 (on Windows 10), but I think they were probably present in previous versions too. For sure not in Oxygen, anyway.

testDelete_projectWithChangedBundleRoot fails intermittently

expected null, but was:<plugin.a>

java.lang.AssertionError: expected null, but was:<plugin.a>
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.failNotNull(Assert.java:756)
at org.junit.Assert.assertNull(Assert.java:738)
at org.junit.Assert.assertNull(Assert.java:748)
at org.eclipse.pde.core.tests.internal.WorkspaceModelManagerTest.testDelete_projectWithChangedBundleRoot(WorkspaceModelManagerTest.java:170)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.eclipse.pde.ui.tests.runtime.TestUtils$1.evaluate(TestUtils.java:271)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner

It fails on I build page and sometimes on tests while pr validation too.

Test failure in I-build

In the last few I-builds we have test failure:
https://download.eclipse.org/eclipse/downloads/drops4/I20220428-1800/testresults/html/org.eclipse.pde.ui.templates.tests_ep424I-unit-cen64-gtk3-java11_linux.gtk.x86_64_11.html

Generated product fails validation: [Missing Constraint: Import-Package: org.osgi.util.function; version="[1.0.0,2.0.0)", Missing Constraint: Require-Bundle: org.osgi.util.promise; bundle-version="[1.2.0,1.3.0)", Missing Constraint: Import-Package: org.osgi.util.promise; version="[1.0.0,2.0.0)", Missing Constraint: Require-Bundle: org.osgi.util.position; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.measurement; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.xml; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.function; bundle-version="[1.2.0,1.3.0)"]

java.lang.AssertionError: Generated product fails validation:
[Missing Constraint: Import-Package: org.osgi.util.function; version="[1.0.0,2.0.0)", Missing Constraint: Require-Bundle: org.osgi.util.promise; bundle-version="[1.2.0,1.3.0)", Missing Constraint: Import-Package: org.osgi.util.promise; version="[1.0.0,2.0.0)", Missing Constraint: Require-Bundle: org.osgi.util.position; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.measurement; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.xml; bundle-version="[1.0.0,1.1.0)", Missing Constraint: Require-Bundle: org.osgi.util.function; bundle-version="[1.2.0,1.3.0)"]
at org.junit.Assert.fail(Assert.java:89)
at org.eclipse.pde.ui.templates.tests.TestPDETemplates.validateProduct(TestPDETemplates.java:196)
at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:42)
at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)
at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:72)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)
at org.eclipse.test.EclipseTestRunner.runTests(EclipseTestRunner.java:226)
at org.eclipse.test.EclipseTestRunner.run(EclipseTestRunner.java:202)
at org.eclipse.test.UITestApplication.lambda$0(UITestApplication.java:103)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5004)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4484)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.test.UITestApplication.run(UITestApplication.java:48)
at org.eclipse.test.UITestApplication.start(UITestApplication.java:118)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
at org.eclipse.core.launcher.Main.main(Main.java:44) 

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.