【发布时间】:2016-07-22 19:45:39
【问题描述】:
场景:我在驱动器的文件夹中有 java 类。我想从一个特定的类中调用一个方法,比如 Regex。 我可以使用反射 API 来调用方法吗?我有以下代码:
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
-
我会检查
Regex.class是否在默认包的类路径中。 -
@PeterLawrey 先生,您不认为
Class.forName(..)中缺少的包名是造成这种情况的原因吗?我在答案部分提到了这一点。如果我错了,请纠正我。 -
@PeterLawrey 哦,是的。我错过了。我会更新答案。谢谢,先生。
-
@PeterLawrey 哦,是的。绝对地。请进行您认为必要的任何修改。
标签: java reflection classnotfoundexception