Porque o servlet procura por arquivos na raiz do JDK?

8 respostas
R

Olá,

Postei uma mensagem semelhante semana passada e foi bem respondida e esclarecida, mas nao cheguei a copiar as respostas porque o site saiu do ar e perdeu o backup.

Fiz um Servlet que tem a funçao de ler um arquivo .properties. Esse arquivo está na raiz da aplicaçao. Mas quando faço o servlet buscar esse arquivo, ele sempre procura na raiz do JDK.

A pergunta é: Como faço para que o servlet busque pelo arquivo na raiz da aplicaçao?

Definir no servlet o endereço “C:\Documents and Settings\Rafael\Projetos/Aplicaçao” é ruim pois terei que mudar o código toda vez que o programa mudar de lugar.

Alguem postou uma resposta dizendo como pegar o path da aplicaçao. Se puder repetir eu agradeço muito.

Obrigado!

8 Respostas

T

Digamos que os arquivos .class de seu servlet estejam em blablabla\WEB-INF\classes. Então, usando getResourceAsStream, dá para você incluir os arquivos .properties em um diretório que é paralelo aos seus diretórios com as classes. Algo assim:

WEB-INF
   classes
      br
         com
            teste
               TesteServlet.class
      resources
         aplicacao.properties

Para você acessar aplicacao.properties, use this.getClass().getClassLoader().getResourceAsStream ("/resources/aplicacao.properties")

jgbt

acho que respondi na semana passada, mas não lembro ao certo o que eu coloquei :mrgreen: então vamo de novo.

bom, basicamente seu arquivo precisa estar no classpath para sua app acha-lo.
acho que o jeito mais facil é vc coloca-lo no mesmo diretorio da sua classe e acessa-lo assim:

Inputstream in = this.getClass().getResourceAsStream("meuArquivo.properties");
Properties props = new Porperties();
props.load(in);

da p/ fazer de outras formas mas desse jeito ja resolve o seu problema.

[]'s

R

Olá thingol,

Além de ler arquivos .properties, também será necessario escrever em um arquivo XML que ficará no mesmo diretório do index.jsp (nesse caso nao funcionaria o código acima).

Sabe alguma forma de pegar o caminho do diretório onde fica o index.jsp?

Obrigado pela resposta.

T

Ler é fácil, escrever é que são elas. É possível obter a URL de um arquivo obtido via getClass().getClassLoader().getResource(), e a partir dela obter o diretório (dá um pouco de trabalho mas é possível).

A

Nao sei se tem problema, mas eu pego o meu arquivo .properties utilizando ResourceBoundle xxx = ResourceBoundle.getxxx(.properties). Se ele nao estiver na raiz de sua aplicacao vc bota o caminho a partir da raiz.

Alberto

brunoGama

esse método proposto funciona também estando em um jar?

brunoGama

pergunto isso pq estou refazendo minha classe de email e tentei fazer um método como o dito aqui e só retorna esta Exception

O fonte:

public void getConfs() throws Exception {
		InputStream is = this.getClass().getResourceAsStream("email.properties");
		Properties  p  = new Properties();
		p.load(is);
		is.close();
    }

estou fazendo isso pra tirar o hardcoding da minha classe mas tá complicado pra achar o propertied. já coloquei na /lib e na /classes
alguem tem alguma sugestão?!

brunoGama

funciono era só a / que faltava no email.properties

noob é isso né
mas valeu igual quem olhou e pensou em quebrar a acbeça;

Criado 27 de março de 2006
Ultima resposta 31 de mar. de 2006
Respostas 8
Participantes 5