场景:我在驱动器中的文件夹中有java类。我想从一个特定的类中调用一个方法,比如Regex。 我可以使用Reflection API来调用方法吗?我有以下代码:反射API - ClassNotFound异常
File dir = new File("H:/TestFolder/sample");
File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
File[] dirListing = child.listFiles();
for (File fileName : dirListing) {
if (fileName.getName().equals("Regex.java")) {
Class<?> clazz;
try {
clazz = Class.forName("Regex");
Constructor<?> ctor = clazz.getConstructor();
Object regexClass = ctor.newInstance();
....}
我得到ClassNotFoundException。有人能告诉我我做错了什么吗?
首先,不能从Java源文件加载必须编译的类。如果你想从一个文件夹加载编译的类文件,请检查[this](http://stackoverflow.com/questions/6219829/method-to-dynamically-load-java-class-files) –
我会检查'正则表达式。 class'在默认包中的类路径中。 –
@PeterLawrey先生,你不觉得在'Class.forName(..)'中丢失的包名引起了这个问题吗?我在回答部分提到了这一点。如果我错了,请纠正我。 –