我正在尝试使用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