eclipse-pde / eclipse.pde Goto Github PK
View Code? Open in Web Editor NEWLicense: Eclipse Public License 2.0
License: Eclipse Public License 2.0
Attempting to use file:${project_loc:/<project-name>}/
results in a URI syntax error:
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.
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
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.
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.
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.
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:
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.
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.
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.
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."
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:
Investigate if the current ASM version breaks/supports new Java version. If required get new ASM version.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=577683
Currently API tools can become unresolvable if ASM 9.2 and ASM 9.3 are present see:
eclipse/xtext-eclipse#1842
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.
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.
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:
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.
a) During eclipse startup with many external libraries i see some seconds spend in ClasspathUtilCore.getPath
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)
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
Many of these warnings are due to quickfix/cleanup removing the //$NON-NLS-1$ comment ( I will file a separate bug in jdt.ui for that). At least one of the strings needs to be externalized.
From https://bugs.eclipse.org/bugs/show_bug.cgi?id=579407
"It seems that we forgot to migrate the event spy as expected in bug #498252
I reopen a bug to trace it.
If you are using Eclipse 2022-03 and you need it, it is available on my update site here : https://www.opcoach.com/repository/2021-12-E4Spies/"
PDE currently supports DS annotations, ist would be usefull to support https://blog.osgi.org/2018/07/osgi-r7-highlights-bundle-annotations.html as well.
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!
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 |
---|
If one looks at https://github.com/eclipse-pde/eclipse.pde/blob/master/apitools/org.eclipse.pde.api.tools.ee.feature/feature.xml it contains only osgiminimum and cdc profiles that are totally useless now. Thus I propose to stop building and publishing the feature.
@vik-chand what do you think?
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)
From https://bugs.eclipse.org/bugs/show_bug.cgi?id=579512#c0
Steps to recreate
references https://wiki.eclipse.org/PDE/Contributor_Guide which still references git.eclipse.org instead of github
Currently they are just regular files, it would be good to have them marked as derived so users don't edit them by accident.
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
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()
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 |
---|
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.
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:
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.
Based on the comment we need to discuss and make the solution more robust.
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.
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)
Currently DS supports a maximum level of 1.3 for DS components.
ASM 9.3 is released, with support for Java 19.
See https://asm.ow2.io/versions.html#9.3
We should update PDE to use it, once the bundle is in Orbit, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=579574
related bug for JDT is eclipse-jdt/eclipse.jdt.debug#8
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)
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)
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:
But the exception thrown by IUBundleContainer.cacheIUs
Is recorded
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.
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.
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
Right now, test failures are not shown properly.
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.
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.
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.
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:
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:
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.
JavaSE-x-systempackages.profile for Java 19 to be created.
Reference: https://bugs.eclipse.org/bugs/show_bug.cgi?id=577684
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:
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:
Those errors also show up on the latest integration build for 4.24.
Based on #113 (comment) we should retire the wizard and related editor.
We may also want to deprecated its support in p2 but that would be a different issue in a different repo.
Make RemoveBuildEntryResolution as a multifix. RemoveBuildEntryResolution can happen for 4 different compiler flags.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.