Метод динамической загрузки файлов классов Java - PullRequest
40 голосов
/ 03 июня 2011

Что может быть хорошим способом динамической загрузки файлов классов Java, чтобы программа, скомпилированная в jar, могла читать все файлы классов в каталоге и использовать их, и как можно записать файлы, чтобы они имели необходимый пакетимя по отношению к банке?

Ответы [ 3 ]

84 голосов
/ 03 июня 2011

Я полагаю, что вы 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) {
}
8 голосов
/ 09 апреля 2012
MyClass obj = (MyClass) ClassLoader.getSystemClassLoader().loadClass("test.MyClass").newInstance();
obj.testmethod();

или

MyClass obj = (MyClass) Class.forName("test.MyClass").newInstance();
obj.testmethod();
1 голос
/ 03 июня 2011

Если вы добавите каталог в путь к классам, вы можете добавить классы после запуска приложения, и эти классы можно будет загрузить, как только они будут записаны в каталог.

...