英文:
How to call constructor from class loaded via classloader
问题
我使用类加载器从一个JAR文件中加载一个类,但是当尝试调用存在的默认构造函数时,我收到一个"NoSuchMethodException"异常。
问题可能是加载的类实际上是java.lang.Class类?
我该如何调用构造函数?
Class<?> JRXlsExporter = urlClassLoader.loadClass("net.sf.jasperreports.engine.export.JRXlsExporter");
String classname = JRXlsExporter.getName(); // 看起来没问题... 它是net.sf.jasperreports.engine.export.JRXlsExporter
Class myclass = JRXlsExporter.getClass(); // 这可能是问题,这个类是java.lang.Class
Constructor constructor = myclass.getConstructor(); // 抛出 java.lang.NoSuchMethodException: java.lang.Class.<init>()
英文:
I use classloader to load a class from a jar, but I get a "NoSuchMethodException" exception when trying to call the default constructor, which does exist.
The problem may to be that the loaded class is simply java.lang.Class?
How can I call the constructor?
Class<?> JRXlsExporter = urlClassLoader.loadClass("net.sf.jasperreports.engine.export.JRXlsExporter");
String classname = JRXlsExporter.getName(); // looks good... it's net.sf.jasperreports.engine.export.JRXlsExporter
Class myclass = JRXlsExporter.getClass(); // this might be a a problem, the class is java.lang.Class
Constructor constructor = myclass.getConstructor(); // throws java.lang.NoSuchMethodException: java.lang.Class.<init>()
答案1
得分: 0
你的 JRXlsExporter
是一个 Class
- 你可以在它上面调用 getConstructor
:
Constructor constructor = JRXlsExporter.getConstructor();
英文:
Your JRXlsExporter
is a Class
- you can call getConstructor
on it:
Constructor constructor = JRXlsExporter.getConstructor();
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论