gharris1727 commented on code in PR #13182: URL: https://github.com/apache/kafka/pull/13182#discussion_r1122110705
########## connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/DelegatingClassLoader.java: ########## @@ -439,6 +457,22 @@ public static <T> String versionFor(Class<? extends T> pluginKlass) throws Refle versionFor(pluginKlass.getDeclaredConstructor().newInstance()) : UNDEFINED_VERSION; } + private static String reflectiveErrorDescription(Throwable t) { + if (t instanceof NoSuchMethodException) { + return ": Plugin class must have a default constructor, and cannot be a non-static inner class"; + } else if (t instanceof SecurityException) { + return ": Security settings must allow reflective instantiation of plugin classes"; + } else if (t instanceof IllegalAccessException) { + return ": Plugin class default constructor must be public"; + } else if (t instanceof ExceptionInInitializerError) { + return ": Plugin class should not throw exception during static initialization"; + } else if (t instanceof InvocationTargetException) { + return ": Constructor must complete without throwing an exception"; + } else { + return ""; Review Comment: I think that actionable error messages are better than non-actionable ones, especially when they can save the novice user a trip to the internet or risk chasing the wrong problem. They also shouldn't be misleading enough to get in the way of an advanced user. I do agree that those particular messages were a bit weak though, and those inner messages did not really do a good job of explaining what went wrong. I now know what an ExceptionInInitializerError means, but I do remember being quite confused by it 2-3y ago when I first encountered it. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org