changeset 21799:10f28849c1ec

improve error message when JVMCI services are not found
author Doug Simon <doug.simon@oracle.com>
date Tue, 09 Jun 2015 00:28:56 +0200
parents 395ac43a8578
children b343319f3dbb
files jvmci/com.oracle.jvmci.service/src/com/oracle/jvmci/service/Services.java
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/com.oracle.jvmci.service/src/com/oracle/jvmci/service/Services.java	Tue Jun 09 00:22:49 2015 +0200
+++ b/jvmci/com.oracle.jvmci.service/src/com/oracle/jvmci/service/Services.java	Tue Jun 09 00:28:56 2015 +0200
@@ -31,11 +31,13 @@
  */
 public class Services {
 
+    private static final String SUPPRESS_PROPERTY_NAME = "jvmci.service.suppressNoClassDefFoundError";
+
     /**
      * Determines whether to suppress the {@link NoClassDefFoundError} raised if a service
      * implementation class specified in a {@code <jre>/jvmci/services/*} file is missing.
      */
-    private static final boolean SuppressNoClassDefFoundError = Boolean.getBoolean("jvmci.service.suppressNoClassDefFoundError");
+    private static final boolean SuppressNoClassDefFoundError = Boolean.getBoolean(SUPPRESS_PROPERTY_NAME);
 
     private static final ClassValue<List<Service>> cache = new ClassValue<List<Service>>() {
         @Override
@@ -45,8 +47,13 @@
             } catch (NoClassDefFoundError e) {
                 if (SuppressNoClassDefFoundError) {
                     return Collections.emptyList();
+                } else {
+                    NoClassDefFoundError newEx = new NoClassDefFoundError(e.getMessage() + "  (suppress with -D" + SUPPRESS_PROPERTY_NAME + "=true)");
+                    if (e.getCause() != null) {
+                        newEx.initCause(e.getCause());
+                    }
+                    throw newEx;
                 }
-                throw e;
             }
         }
     };