Adicionando diretório relativo ao Java ClassPath e usando Classloader (). GetResourceasStream ("")

StackOverflow https://stackoverflow.com/questions/842538

Pergunta

É possível adicionar um diretório relativo (ou seja, foo/bar/plugh) ao caminho de classe Java e usar

InputStream in = getClassLoader().getResourceAsStream("xyzzy.properties");

Para buscar foo/bar/plugh/xyzzy.properties?

Meu caminho de classe se parece com o seguinte:

foo.jar;foo/bar/plugh;xyz.jar 

E sou capaz de usar classes e recursos de potes Foo e XYZ, mas não do diretório de Plugh. Nesses casos, in é sempre nulo.

Não consigo fazer isso funcionar e não tenho certeza se isso não é suportado, estou perdendo algo sutil ou se estou fazendo algo errado. Eu preciso usar um caminho absoluto?

Foi útil?

Solução

Talvez eu esteja entendendo mal o que você está tentando fazer, mas se você tiver uma pasta em seu caminho de classe, isso significa que todos os arquivos por baixo também devem estar no caminho de classe. Caso contrário, você sempre pode passar por cada arquivo .Properties no caminho da classe.

Mas de qualquer maneira, como o arquivo/pasta que contém o arquivo está no caminho de classe, você deve apenas poder fazer:

InputStream in = new FileInputStream("classpath:xyz.properties")

E como "Foo/Bar/Plugh" está no caminho de classe, um dos lugares que ele procurará por XYZ.Properties está em "Foo/Bar/Plugh".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top