动态加载java类文件的方法

时间:2011-06-02 20:13:16

标签: java class reflection dynamic load

动态加载java类文件的好方法是什么,编译成jar的程序可以读取目录中的所有类文件并使用它们,如何编写文件以便它们具有必要的包与罐子有关的名字?

3 个答案:

答案 0 :(得分:83)

我相信这是你所追求的ClassLoader

我建议你先看看下面的例子,它加载不在类路径上的类文件。

// Create a File object on the root of the directory containing the class file
File file = new File("c:\\myclasses\\");

try {
    // Convert File to a URL
    URL url = file.toURI().toURL();          // file:/c:/myclasses/
    URL[] urls = new URL[]{url};

    // Create a new class loader with the directory
    ClassLoader cl = new URLClassLoader(urls);

    // Load in the class; MyClass.class should be located in
    // the directory file:/c:/myclasses/com/mycompany
    Class cls = cl.loadClass("com.mycompany.MyClass");
} catch (MalformedURLException e) {
} catch (ClassNotFoundException e) {
}

答案 1 :(得分:8)

MyClass obj = (MyClass) ClassLoader.getSystemClassLoader().loadClass("test.MyClass").newInstance();
obj.testmethod();

MyClass obj = (MyClass) Class.forName("test.MyClass").newInstance();
obj.testmethod();

答案 2 :(得分:1)

如果在类路径中添加目录,则可以在应用程序启动后添加类,并且可以在将这些类写入目录后立即加载它们。