You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/10/01 14:49:53 UTC
[tomcat] 04/08: Try and detect bugs like BZ 63778
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 3a4adaa45a0231bf8d853b51468e14a37a9e3dfd
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Oct 1 15:14:08 2019 +0100
Try and detect bugs like BZ 63778
---
java/org/apache/tomcat/util/compat/Jre9Compat.java | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/java/org/apache/tomcat/util/compat/Jre9Compat.java b/java/org/apache/tomcat/util/compat/Jre9Compat.java
index 73b2fe0..68be1db 100644
--- a/java/org/apache/tomcat/util/compat/Jre9Compat.java
+++ b/java/org/apache/tomcat/util/compat/Jre9Compat.java
@@ -70,6 +70,10 @@ class Jre9Compat extends Jre8Compat {
Object o15 = null;
try {
+ // Order is important for the error handling below.
+ // Must look up c1 first.
+ c1 = Class.forName("java.lang.reflect.InaccessibleObjectException");
+
Class<?> moduleLayerClazz = Class.forName("java.lang.ModuleLayer");
Class<?> configurationClazz = Class.forName("java.lang.module.Configuration");
Class<?> resolvedModuleClazz = Class.forName("java.lang.module.ResolvedModule");
@@ -79,7 +83,6 @@ class Jre9Compat extends Jre8Compat {
Method runtimeVersionMethod = JarFile.class.getMethod("runtimeVersion");
Method majorMethod = versionClazz.getMethod("major");
- c1 = Class.forName("java.lang.reflect.InaccessibleObjectException");
m4 = URLConnection.class.getMethod("setDefaultUseCaches", String.class, boolean.class);
m5 = moduleLayerClazz.getMethod("boot");
m6 = moduleLayerClazz.getMethod("configuration");
@@ -100,8 +103,13 @@ class Jre9Compat extends Jre8Compat {
// Should never happen
log.error(sm.getString("jre9Compat.unexpected"), e);
} catch (ClassNotFoundException e) {
- // Must be pre-Java 9
- log.debug(sm.getString("jre9Compat.javaPre9"), e);
+ if (c1 == null) {
+ // Must be pre-Java 9
+ log.debug(sm.getString("jre9Compat.javaPre9"), e);
+ } else {
+ // Should never happen - signature error in lookup?
+ log.error(sm.getString("jre9Compat.unexpected"), e);
+ }
} catch (IllegalArgumentException e) {
// Should never happen
log.error(sm.getString("jre9Compat.unexpected"), e);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org