На основе этого ответа я создал следующую функцию JavaScript для динамической загрузки класса из файла JAR:
var requireJavaClass=(function(){
var method=java.net.URLClassLoader.class.getDeclaredMethod("addURL",java.net.URL.class);
method.setAccessible(true);
var cache={};
var ClassLoader=java.lang.ClassLoader;
var File=java.io.File;
return function(classname,jarpath){
var c=cache[classname];
if (c) return c;
if (jarpath) {
var cl=ClassLoader.getSystemClassLoader();
method.invoke(cl,new File(jarpath).toURI().toURL());
cl.loadClass(classname);
}
return cache[classname]=Java.type(classname);
}
})();
Эквивалент фрагмента, который я разместил в мой вопрос будет:
var MyCustomClass=requireJavaClass("com.mydynamicpackage.MyCustomClass","path/to/dynamic.jar");
var instance = new MyCustomClass();
До сих пор я проверял это только с Vert.x 3.8.5 , работающим в JRE8 , т.е. я могу ' Сказать, работает ли это также в более старых версиях Vert.x или с JRE9 +.