[
https://issues.jboss.org/browse/WFLY-11353?page=com.atlassian.jira.plugin...
]
David Lloyd commented on WFLY-11353:
------------------------------------
bq. Another potential workaround probably would be to rely on the JRE's system
properties.
Unfortunately not; the trouble is that VFS is loading class resources in a different way
than JarFile does (internally exploding the classes into a filesystem location (yes
there's a good reason for this)), and thus it's VFS that needs to be fixed.
bq. But it may work, if the modules are loaded via the standard JRE classloader.
It will work, but not because of this. MR JAR handling is not actually directly related
to the class loader at all; rather, it is a characteristic of JarFile. If I were to
explode a WAR onto the file system, and use the same standard JDK URLClassLoader to load
it, it would not behave in an MR JAR compliant fashion.
"Normal" non-WAR deployments do use JarFile (if I recall correctly; it would
bear testing though); and, JBoss Modules' default resource loaders definitely use
JarFile in the correct way to support MR JARs (this is thoroughly tested).
Classes for newer versions are not loaded from Multi-Release-JARs in
WARs
-------------------------------------------------------------------------
Key: WFLY-11353
URL:
https://issues.jboss.org/browse/WFLY-11353
Project: WildFly
Issue Type: Bug
Components: Class Loading
Affects Versions: 14.0.0.Final, 15.0.0.Final
Environment: Java 9+
Reporter: Daniel Schwering
Priority: Major
Attachments: buggywar.src.zip, buggywar.war, multireleaselib-0.0.1-SNAPSHOT.jar,
multireleaselib-0.0.1-SNAPSHOT.jar, multireleaselib.src.zip, multireleaselib.src.zip
1
down vote
favorite
Since Java 9 there are Multi-Release JARs ([
MRJARS|https://openjdk.java.net/jeps/238])
that allow different classes for different Java versions to be included in one JAR file. I
was surprised when a Wildfly 14 running on Java 11 executed Java-8-code in a JAR included
in a WAR although the JAR was a MRJAR with code for Java 11. That JAR included as a
dependency for a regular Java SE project is running different code depending on the
running JRE, but when included in a WAR, the Java-11-code seems to be ignored.
Is that expected behavior for a webserver, as Java EE 8 does not explicitly require Java
9 (which introduced MRJARs) but only Java 8?
--
This message was sent by Atlassian Jira
(v7.12.1#712002)