Tenho este properties. D:/ide/workspace_luna/erp/erp-modelo/src/main/resources/APP_MSG_AUTH.properties. Mas logico que quando eu colocar no servidor vai dar erro.
Como faze para pegar o caminho absoluto até chegar neste arquivo, indepedente de onde esteja incluído ?
eu pego assim:
nomeArquivoFull = getApplicationPath() + “/configuracao.xml”;
public String getApplicationPath() {
String url = getClass().getResource(getClass().getSimpleName() + ".class").getPath();
File dir = new File(url).getParentFile();
String path;
if(dir.getPath().contains(".jar")){path=findJarParentPath(dir);}else{path=dir.getPath();}try{path=URLDecoder.decode(path,"UTF-8");}catch(UnsupportedEncodingExceptione){path=path.replace("%20"," ");}System.out.println("Path:"+path);//verificar se site svwsistemasintxs=path.indexOf("xxxsistemas");intx=0;if(xs>-1){x=path.indexOf("xxx",(xs+7));}else{x=path.indexOf("xxx");}path=path.substring(0,x);returnpath;}privateStringfindJarParentPath(FilejarFile){while(jarFile.getPath().contains(".jar")){jarFile=jarFile.getParentFile();}returnjarFile.getPath().substring(6);}
Neste exemplo ai o nome da aplicação é xxx e o arquivo de configuração(configuracao.xml) fica junto com o arquivo .war na pasta webapps do tomcat.
E o teste onde tem xxxsistemas é porque o dominio em que esta hospedado pode conter o nome da aplicacao no inicio dele, em resumo creio que isto pode lhe dar uma ideia de como resolver teu problema.
A ideia é pegar o path da própria classe que esta sendo executada e a partir dele definir o local do teu arquivo de configurações para tua variável
CAMINHO_PROPERTIES_MSG.
neste caso que te passei a ideia foi cortar o final do path para ficar no mesmo nivel do arquivo xxx.war
guilhermebhte
Entendi. Eu só não consegui implementar.
guilhermebhte
Alguma outra ajuda ?
P
Solucao aceita
programador1225
Se for uma aplicação web :
crie uma pasta com nome classes dentro de WEB-INF e coloque seus properties nessa pasta.
Ex : WEB-INF/classes/exemplo.properties
E leia com
InputStream file = getClass().getClassLoader().getResourceAsStream("exemplo.properties");
Properties properties = new Properties();
properties.load(file);
String valor = properties.getProperty("chave");
guilhermebhte
Porque está em um subprojeto. É um JAR, o projeto aonde está o arquivo properties.