ClassNotFoundException while using Class.forName()



我正在尝试使用Java反射来读取类文件并输出其内容。这是我的 Reflect.java 文件代码,它抛出了错误:

String className = classNames.get(classNum).replace(".class", "");
        String packageAndClassName = packageName + "." + className;
        System.out.println(packageAndClassName);
        try{
            Class<?> c = Class.forName(packageAndClassName);

我读取包内容的命令如下所示

java -classpath . reflect.Reflect package /u/username/Desktop/Experiment/others/package/

在这里,arg[0]= package and arg[1]=/u/username/Desktop/Experiment/others/package/

我的类路径如下所示:

/u/username/Desktop/Experiment/reflect/:/u/username/Desktop/Experiment/others/package/

"其他"包含包。我不知道我做错了什么。我查找了很多答案,它们涉及键入 Reflect 类的整个名称,这是我在我的命令中执行的。关于我错过了什么的任何想法?

你应该注意类路径参数。我猜您尝试加载的类不在路径中,因此您需要在那里添加包目录。

另一种选择是使用 UrlClassLoader

最新更新