Hey Richard,
Maybe it is caused by the fact that Eclipse is using split
packages.
This enables multiple bundles (plugins) to contribute to the same
package. I'm guessing that parts of the
org.eclipse.core.runtime package
are exported by other bundles. You may need to include all
bundles that
contribute to this package from the workspace.
Cheers,
Wim
On Thu, Oct 3, 2019 at 10:41 AM Richard Steiger
<rsteiger@xxxxxxxxxxxxxxxx <mailto:rsteiger@xxxxxxxxxxxxxxxx>>
wrote:
As I've discussed in prior messages to platform-dev@, I'm
working on
prototyping a proposed new ejc feature, to surface an
option in the
IDE's Java compiler preferences, allowing setting
JavaCore.*/CORE_CIRCULAR_CLASSPATH/*, and adding an IGNORE
value to
it's range (in addition to ERROR and WARN), with the ultimate
purpose of allowing building systems that intentionally
leverage
mutually-recursive modules (where I use /module /in the
classic
sense, not the JDK's Module subsystem since 9).
As I've also promised, I'll be creating a feature bug that
explains
the background, rationale, and proposed code changes,
hopefully by
this Friday. That said, prior to doing so, I feel it's
essential
for me to empirically verify that this mod works
end-to-end as I
intend, and, for example, doesn't spawn a class-loading or
other
runtime hornet's nest (that's not straightforwardly
avoided|addressed).
To this verification end, I'm trying to run a test harness
that
1. selects the IGNORE option,
2. builds 2 (/test/) /subject /projects that are
mutually-dependent,
3. assuming that the subject projects successfully build,
launches
the main (entry-point) project (which triggers loading
the
second one, etc), and
4. assuming no hornets appear, verifies that at least a
minimal
circular classpath case is correctly handled, end-to-end.
I've spent quite a bit of time reading eclipse docs,
how-tos, the
/Eclipse Plugins/ bible (3rd ed), and browsed a fair
amount of JDT
code, trying to figure out how to get the test to work,
and at this
point, my pick is bent. I could really use a hint how to
proceed.
To set context, the test project, and both subject
projects, all
reside in the jdt-master workspace (btw, is there a
vernacular
shorthand for this workspace?). My first attempt to get
the test to
work was simply to either run or debug it as a Java app.
It fails
with the backtrace
Exception in thread "main"
java.lang.SecurityException: class
"org.eclipse.core.runtime.IStatus"'s signer
information does not
match signer information of other classes in the same
package
at
java.lang.ClassLoader.checkCerts(ClassLoader.java:898)
at
java.lang.ClassLoader.preDefineClass(ClassLoader.java:668)
at
java.lang.ClassLoader.defineClass(ClassLoader.java:761)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at
java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at
java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at
java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at
java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at
java.security.AccessController.doPrivileged(Native Method)
at
java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at
java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at
java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at
net.ess.jcore.CompilerRunner.configureCompiler(CompilerRunner.java:47)
at
net.ess.jcore.CompilerRunner.doCompilation(CompilerRunner.java:42)
at
net.ess.jcore.CompilerRunner.main(CompilerRunner.java:37)
Just prior to throwing the SecurityException, the JVM's
classpath is
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.osgi_3.15.0.v20190830-1434.jar
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.osgi.compatibility.state_1.1.600.v20190814-1451.jar
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.equinox.common_3.10.500.v20190815-1535.jar
T:\eclipse\SDK\jdt-master\git\eclipse.platform.runtime\bundles\org.eclipse.core.jobs
<http://org.eclipse.core.jobs>\bin
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.equinox.registry_3.8.500.v20190714-1850.jar
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.equinox.preferences_3.7.500.v20190815-1535.jar
C:\Users\rsteiger\.p2\pool\plugins\javax.xml_1.3.4.v201005080400.jar
T:\eclipse\SDK\jdt-master\git\eclipse.platform.runtime\bundles\org.eclipse.core.contenttype\bin
C:\Users\rsteiger\.p2\pool\plugins\org.eclipse.equinox.app_1.4.300.v20190815-1535.jar
T:\eclipse\SDK\jdt-master\git\eclipse.platform.runtime\bundles\org.eclipse.core.runtime\bin
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.core\antbin
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.core\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.debug\org.eclipse.core.variables\bin
C:\Users\rsteiger\.p2\pool\plugins\org.apache.ant_1.10.5.v20190526-1402\lib\ant.jar
C:\Users\rsteiger\.p2\pool\plugins\org.apache.ant_1.10.5.v20190526-1402\lib\ant-launcher.jar
T:\eclipse\SDK\jdt-master\git\eclipse.platform\ant\org.eclipse.ant.core\src_ant_bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform\ant\org.eclipse.ant.core\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.runtime\bundles\org.eclipse.core.expressions\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.resources\bundles\org.eclipse.core.filesystem\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.resources\bundles\org.eclipse.core.resources\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.text\org.eclipse.text\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.ui\bundles\org.eclipse.core.commands\bin
C:\Users\rsteiger\.p2\pool\plugins\com.ibm.icu_64.2.0.v20190507-1337.jar
T:\eclipse\SDK\jdt-master\git\eclipse.platform.team\bundles\org.eclipse.team.core\bin
T:\eclipse\SDK\jdt-master\git\eclipse.platform.team\bundles\org.eclipse.compare.core\bin
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.compiler.apt\bin
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.compiler.apt\lib\java10api.jar
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.compiler.tool\bin
T:\eclipse\SDK\jdt-master\git\eclipse.jdt.core\org.eclipse.jdt.compiler.tool\lib\java10api.jar
My understanding is that the launchConfiguration that's being
generated and applied is erroneous: as can be seen, the
classpath
includes references to plugin jars in my base eclipse
installation
(paths starting with C:\Users\rsteiger\.p2\pool\plugins\),
and not
from the just-built jdt-master workspace (paths starting with
T:\eclipse\SDK\jdt-master\git\). I've tried several
approaches to
fix this:
* made the test project into a plugin (not sure I didn't
goof this
up, since am a plugin-noob);
* discovering that the project's /Plug-in Dependencies/
is a
read-only classpath container containing the above
incorrect
jars, tried removing <classpathentry kind="con"
path="org.eclipse.pde.core.requiredPlugins"/> from the project's
.classpath, then adding kind="lib" entries for (what I
thought
are) the correct jars;
* revisiting various references describing care and
feeding of
launchConfigs, finding nothing covering how to
configure configs
from the jdt workspace UI, just how to do so
programmatically
(which is of course totally useless in this context); and
* gnashing my teeth and swearing.
None of these approaches have helped.
I turn to y'all to suggest a viable approach.
Thanks in advance,
-rjs
_______________________________________________
platform-dev mailing list
platform-dev@xxxxxxxxxxx <mailto:platform-dev@xxxxxxxxxxx>
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/platform-dev
_______________________________________________
platform-dev mailing list
platform-dev@xxxxxxxxxxx <mailto:platform-dev@xxxxxxxxxxx>
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/platform-dev