我不知道,我怎么能读取文件。我想阅读FK.java文件,但给我一个未找到的类异常。 FK是注释java文件。 (我尝试过“src / annotations / FK.java”,但没有用。
private static String clazz = "src/annotations/FK";
public static List<Object> GetAnnotations() throws ClassNotFoundException{
Class<?> c;
c = Class.forName(clazz);
List<Object> result = new ArrayList();
Field[] fields = c.getDeclaredFields();
for (int j = 0; j < fields.length; j++)
{
Annotation[] annot = fields[j].getAnnotations();
for (int k = 0; k < annot.length; k++)
{
result.add(annot[k].annotationType());
}
}
return result;
}
public static void main(String[] args) throws ClassNotFoundException {
System.out.println(GetAnnotations());
}
答案 0 :(得分:1)
该类的名称应包含点(.
)而不是斜杠('/
')
private static String clazz = "annotations.FK";
然后
Class.forName(clazz);
将尝试从提供的类路径中加载类 annotations/FK.class
。如果您只有.java文件,则需要先编译它。
编辑:基于评论的固定路径
答案 1 :(得分:0)
您的问题是,您正在尝试使用错误的语法为带注释的类获取Class对象。
Class.forName(String)
- 方法将完全限定的Java类名称作为参数。这是包含在Java文件中声明的类的包的名称,后面紧跟着您的类名。在您的情况下,可能是"annotations.FK"
。
另一个注意事项是,仅仅拥有该类的Java源代码文件是行不通的。您需要在类路径中包含已编译的类。
这是一个简单的例子:
// mytoplevelpackage/mypackage/MyClass.java
package mytoplevelpackage.mypackage;
public class MyClass {}
// mytoplevelpackage/OtherClass.java
package mytoplevelpackage;
public class OtherClass {
public static void main(String[] args) throws ClassNotFoundException {
Class c = Class.forName("mytoplevelpackage.mypackage.MyClass");
}
}