1-br/com/ctech/utils/.class --> os class fazem parte do pacote br.com.ctech.utils
2-/agenda/jsp/.jsp --> paginas jsp que estao no diretorio ROOT do tomcat
Criei um arquivo db.properties com as propriedades de acesso ao banco de dados que eh utilizado pela classe ConectaBancoDados.java. O db.properties estah em br/com/ctech/utils/. No entanto, quando rodo minha aplicacao jsp a seguinte excessao eh lancada: java.io.FileNotFoundException: db.properties (No such file or directory). Esseh eh o codigo que faz referencia ao arquivo:
FileInputStream fis = new FileInputStream(“db.properties”);
Em qual diretorio eu devo colocar o arquivo de propriedades ou como chamar ele na aplicação? Estou usando a plataforma Linux.
FileInputStream arquivo = new FileInputStream(System.getProperty("catalina.base")+"/webapps/suaplicacao/br/com/ctech/utils/db.properties");
L
lap_junior
especificando apenas o nome do arquivo vc está indicando que ele está no mesmo diretório que o seu jsp. Para resolver vc pode passar o path completo para o arquivo.
E para passar o caminho completo do arquivo vc pode utilizar
FileInputStream fis = new FileInputStream( application.getRealPath( "/WEB-INF/classes/br/com/ctech/utils/db.properties" ) );
Obs.: o application no jsp é um objeto implicito que implementa a interface javax.servlet.ServletContext
flw
W
wendell_almeida_silv
“lap_junior”:
especificando apenas o nome do arquivo vc está indicando que ele está no mesmo diretório que o seu jsp. Para resolver vc pode passar o path completo para o arquivo.
E para passar o caminho completo do arquivo vc pode utilizar
FileInputStream fis = new FileInputStream( application.getRealPath( "/WEB-INF/classes/br/com/ctech/utils/db.properties" ) );
Obs.: o application no jsp é um objeto implicito que implementa a interface javax.servlet.ServletContext
flw
Entendi…mas quem faz referência ao arquivo não eh o jsp, mas sim a classe ConectaBancoDados.class. Essa sim eh chamada pelo jsp.
W
wendell_almeida_silv
“lap_junior”:
especificando apenas o nome do arquivo vc está indicando que ele está no mesmo diretório que o seu jsp. Para resolver vc pode passar o path completo para o arquivo.
E para passar o caminho completo do arquivo vc pode utilizar
FileInputStream fis = new FileInputStream( application.getRealPath( "/WEB-INF/classes/br/com/ctech/utils/db.properties" ) );
Obs.: o application no jsp é um objeto implicito que implementa a interface javax.servlet.ServletContext
flw
Funciou…obrigado pela dica.
Aproveitando…para se fazer referência a um arquivo de entrada em FileInputStream eh sempre necessário indicar o caminho completo desde a raiz do sistema?
L
lap_junior
Isso mesmo, sei que está na classe, mas quem está utilizando a classe é o JSP por isto o arquivo está sendo procurado no mesmo diretório onde ele ( JSP ) está.
Isso pq quando vc instancia a sua classe vc não está mudando o diretório, está apenas utilizando um outro recurso.
Não sei se consegui ser claro o suficiente.
blz
W
wendell_almeida_silv
“lap_junior”:
especificando apenas o nome do arquivo vc está indicando que ele está no mesmo diretório que o seu jsp. Para resolver vc pode passar o path completo para o arquivo.
E para passar o caminho completo do arquivo vc pode utilizar
FileInputStream fis = new FileInputStream( application.getRealPath( "/WEB-INF/classes/br/com/ctech/utils/db.properties" ) );
Obs.: o application no jsp é um objeto implicito que implementa a interface javax.servlet.ServletContext
flw
Funciou…obrigado pela dica.
Aproveitando…para se fazer referência a um arquivo de entrada em FileInputStream eh sempre necessário indicar o caminho completo desde a raiz do sistema?
L
lap_junior
“wendell almeida silva”:
Funciou…obrigado pela dica.
Aproveitando…para se fazer referência a um arquivo de entrada em FileInputStream eh sempre necessário indicar o caminho completo desde a raiz do sistema?
É a mesma coisa, não é… mas se vc não especificar vc pode ter problemas quando for procurar o arquivo, como aconteceu com sua classe.
flw
W
wendell_almeida_silv
“thiagorani”:
Coloque assim:
FileInputStream arquivo = new FileInputStream(System.getProperty("catalina.base")+"/webapps/suaplicacao/br/com/ctech/utils/db.properties");
Funcionou perfeitamente essa solução. Obrigado.
N
net_sandro
Para não se fixar ao catalina, ou a algum recurso do sistema operacional, e resolvendo de forma elegante, o ServletContext tem um método desenvolvido exatamente para essa tarefa.
A String passada como parâmetro deve começar com “/” que representa o contexto da aplicação, ou melhor, do servlet.
W
wendell_almeida_silv
“net_sandro”:
Para não se fixar ao catalina, ou a algum recurso do sistema operacional, e resolvendo de forma elegante, o ServletContext tem um método desenvolvido exatamente para essa tarefa.
A String passada como parâmetro deve começar com “/” que representa o contexto da aplicação, ou melhor, do servlet.
:)
O que seria o contexto da aplicação? Então dessa forma a String pode ser somente o nome do arquivo. Mas eu devo colocar o arquivo junto ao diretorio da classe que faz referencia ao InputStream ou junto ao jsp que utiliza esta classe?