# HG changeset patch # User Doug Simon # Date 1433802536 -7200 # Node ID 10f28849c1ec9c4e6bd8bd78a3b4976c75f6d73f # Parent 395ac43a857803090cef1bed11c711e846d74076 improve error message when JVMCI services are not found diff -r 395ac43a8578 -r 10f28849c1ec jvmci/com.oracle.jvmci.service/src/com/oracle/jvmci/service/Services.java --- 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 /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> cache = new ClassValue>() { @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; } } };