Regression from: #2218
An example problem: eclipse-jdt/eclipse.jdt.ui#2830
There is an abnormal number of plug-ins on the classpath now. E.g. org.eclipse.jdt.debug.tests had ~25 entries in the container before. It now has ~230.
E.g. looking at one plug-in that has no place on the classpath of org.eclipse.jdt.debug.tests, but is now: org.apache.ant
Its required by:
org.eclipse.platform 4.40.0.v20260304-2033
org.eclipse.swtbot.eclipse.test.junit 4.3.0.202510091338
org.eclipse.ant.launching 1.4.1100.v20260304-1512
org.eclipse.ant.tests.ui 3.12.500.qualifier
org.eclipse.ant.ui 3.10.500.v20260304-1512
org.eclipse.jdt.apt.core 3.8.600.v20241001-0914
org.eclipse.test 3.6.500.v20260105-1638
org.eclipse.text.quicksearch 1.3.400.v20260117-1027
ZipEditor 1.1.9.202308271843
None of these re-export their dependency (visibility:=reexport) to org.apache.ant, so why is org.eclipse.jdt.debug.tests now able to use code from org.apache.ant? I can e.g. make this change:
@@ -51,7 +51,7 @@ import org.junit.rules.TestName;
* Tests the Open from Clipboard action.
*/
public class OpenFromClipboardTests {
-
+ org.apache.tools.ant.taskdefs.Ant a;
/*
* Copy of constants from OpenFromClipboardAction
*/
It will compile in Eclipse, but it should not. See OSGI specification:
https://docs.osgi.org/specification/osgi.core/8.0.0/framework.module.html#framework.module.requirebundle
The following directives can be used in the Require-Bundle header:
visibility - If the value is private (default), then all visible packages from the required bundles are not re-exported.
If the value is reexport then bundles that require this bundle will transitively have access to these required bundle's exported packages.
That is, if bundle A requires bundle B, and bundle B requires bundle C with visibility:=reexport
then bundle A will have access to all bundle C's exported packages as if bundle A had required bundle C.
Regression from: #2218
An example problem: eclipse-jdt/eclipse.jdt.ui#2830
There is an abnormal number of plug-ins on the classpath now. E.g.
org.eclipse.jdt.debug.testshad ~25 entries in the container before. It now has ~230.E.g. looking at one plug-in that has no place on the classpath of
org.eclipse.jdt.debug.tests, but is now:org.apache.antIts required by:
None of these re-export their dependency (
visibility:=reexport) toorg.apache.ant, so why isorg.eclipse.jdt.debug.testsnow able to use code fromorg.apache.ant? I can e.g. make this change:It will compile in Eclipse, but it should not. See OSGI specification:
https://docs.osgi.org/specification/osgi.core/8.0.0/framework.module.html#framework.module.requirebundle