Class.forName不从指定目录加载数据

时间:2012-03-01 02:44:32

标签: java

我在文件夹Customer.java中有一个名为d:/sample directory的Java文件。但是当我使用Class.forName("d:/sample/Customer")时,它会在找不到文件时抛出异常。我也试过了Class.forName("d:/sample/Customer.java"),但得到了同样的例外。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

Class.forName()方法采用类的完全限定名称(FQN),而不是文件。例如,您可以将其用作

Class.forName("Customer");

假设您的Customer类在默认包中。当您使用SDK方法遇到问题时,最好咨询JavaDocs。为了将来参考,here是您尝试使用的方法的文档。

答案 1 :(得分:1)

请参阅JavaDoc's on Class以正确使用forName方法。该方法需要“所需类的完全限定名称”。一个例子如下:

Class t = Class.forName("java.lang.Thread")

如果您希望在该方法中加载它,您的Customer.java类必须位于ClassPath上。然后你必须通过完全限定的路径加载它,也就是包,然后是类名。

答案 2 :(得分:1)

  1. 将.java文件编译为.class文件
  2. 将.class文件添加到类路径中(即通过java -cp d:/sample/; MainClass
  3. 然后,代码如下:Class.forName("Customer");

答案 3 :(得分:1)

1:要加载的类

package com.test;
class Example{
    //empty class
}

2:将文件保存到:d:/example/com/test/Example.java

2:编译课程:

javac  d:/example/com/test/Example.java

...

3:写测试类:

package com.test;
class MainClass{
    public static void main(String[] args)throws Exception{
        System.out.println(Class.forName("com.test.Example"));
    }
}

4:编译课程:

javac  d:/example/com/test/MainClass.java

...

5:运行程序:

java -cp D:/example/ com.test.MainClass

结果:

class com.test.Example