2015-03-07 6 views
3

Я пытался получить доступ к ресурсам (с пометкой) в папку Java приложения, но ничего не работает, возвращает неверные путине удается получить доступ к папке ресурсов в Java

Я пробовал:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
System.out.println(classLoader.getResource(".")); 

и

ClassLoader classLoader = Config.class.getClassLoader(); 
System.out.println(classLoader.getResource(".")); 

но он показывает мне file:/D:/testProject/build/classes/main/, и, конечно, нет никаких ресурсов файлов :(

Как получить доступ к точно resources папке?

-TestProject 
|-resources 
|-src 
    |-main 

ответ

6

Имейте в виду, что слово ресурс в вашей структуре Gradle и слово ресурс в ClassLoader не связаны между собой.

Как ваш ClassLoader может иметь более одного корня, вам нужно петлю над корнями. Используйте getResources() вместо getResource(). См http://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html#getResources-java.lang.String-

Как это:

ClassLoader classLoader = Config.class.getClassLoader(); 
// or use: 
// ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
// depending on what's appropriate in your case. 
Enumeration<URL> roots = classLoader.getResources("."); 
while (roots.hasMoreElements()) { 
    final URL url = roots.nextElement(); 
    System.out.println(url); 
} 
Смежные вопросы