Mercurial > hg > graal-jvmci-8
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; } } };