Разница между (гуава) Resources.getResource(bddconf.xml) и properties.getClass().getResourceAsStream(bddconf.xml);

В военном проекте maven я использую плагин jetty-maven в качестве контейнера для разработки.

я отфильтровал некоторые файлы ресурсов, и, в частности, давайте назовем его "bddconf.xml".

Этот файл фильтруется maven и помещается в каталог target/classes.

Старый самодельный поиск bdd fwk после этого файла с помощью этого фрагмента:

 Properties properties = new Properties();
 InputStream inputstream = properties.getClass().getResourceAsStream("/bddconf.xml");

Когда я запускаю этот фрагмент, в моем веб-приложении (в причале) inputStream имеет значение null.

Принимая во внимание, что с этим фрагментом в том же методе:

import com.google.common.io.Resources;
String file = Resources.getResource("bddconf.xml").getFile();
File file2 = new File(file);
logger.info("Does bdd file exists : [" + file2.exists() + "] file : [" + file2.toString() + "]");
// Does bdd file exists : [true] file : [..path..\target\classes\bbdconf.xml] 

Это работает, так в чем разница между этими двумя методами?


person Antoine    schedule 30.12.2011    source источник


Ответы (1)


Может быть класс Properties и класс ресурсов guava имеют разные загрузчики классов (с разными привилегиями), потому что Class.getResource() и Resources.getResource() выполняют за вас одну и ту же работу. Вы можете посмотреть на источники гуавы:

  public static URL getResource(String resourceName) {
    URL url = Resources.class.getClassLoader().getResource(resourceName);
    checkArgument(url != null, "resource %s not found.", resourceName);
    return url;
  }

Класс.getResource:

    name = resolveName(name);
    ClassLoader cl = getClassLoader0();
    if (cl==null) {
        // A system class.
        return ClassLoader.getSystemResource(name);
    }
    return cl.getResource(name);
person 4ndrew    schedule 30.12.2011