Porque o servlet procura por arquivos na raiz do JDK?
8 respostas
R
rafaelsouzaf
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.
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:
da p/ fazer de outras formas mas desse jeito ja resolve o seu problema.
[]'s
R
rafaelsouzaf
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
thingol
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
alots_ssa
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
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;