есть файл в корневом каталоге загрузчика классов, как его создать - PullRequest
0 голосов
/ 25 марта 2011
File f = new File(path)

Как задать параметр пути в этом случае?

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Ты имеешь в виду что-то подобное?

    URL resource = Thread.currentThread().getContextClassLoader().getResource("config.properties");
    File f = new File(resource.toURI());
1 голос
/ 25 марта 2011

Вы можете использовать лучший вариант и перейти на java.net.URLClassLoader.

Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL-адресов, относящихся как к файлам JAR, так и к каталогам.

A URLClassLoader может использоваться для загрузки классов в любом каталоге.

Извлечь этот пример

// 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.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) {
}

Также,взгляните на File ClassLoader в Java

1 голос
/ 25 марта 2011

В принципе, вам нужно знать, откуда загрузчик классов загружает свои ресурсы. Это зависит от загрузчика классов, и большинство типов загрузчиков классов вообще не используют файлы. Если у вас есть URLClassLoader (что, к счастью, довольно часто), вы можете спросить его о его URL и посмотреть, есть ли один file: URL. Затем используйте этот URL в качестве базы.

Если ваш Classloader не имеет file: URL, очевидно, у вас нет шансов.

Но я думаю, что, скорее всего, вы делаете не правильно - что вы действительно хотите сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...