Fiz um aplicativo aqui pra um projeto e necessito colocá-lo para iniciar junto com o Windows. Até aí beleza, tudo tranquilo. O problema é que, ao executar, ele perde todas as referências aos arquivos externos, já que os caminhos estão todos relativos. Assim, as imagens e um arquivo .properties que ele utiliza não são encontrados. A minha dúvida: há alguma forma de resolver isso no Java sem ter que colocar o caminho absoluto dos arquivos (já que o local de instalação do aplicativo pode variar).
Se os arquivos não mudam, o ideal é acessa-los dentro do .jar como recursos.
Se mudam, o ideal é criar um arquivo de configuração onde a pasta deles fique gravada. O instalador pode gerar esse arquivo.
Infelizmente o Java não fornece meios de você descobrir onde o .jar está.
striker07
Os arquivos são mistos. Tenho algumas imagens que utilizo em um tray icon e um arquivo .properties com algumas configurações de execução. O jeito vai ser mesmo colocar o caminho absoluto ou passar os parâmetros na instalação.
Obrigado!
drsmachado
striker07, dizer que os arquivos são mistos não é uma forma de dizer se eles mudam ou não.
Eu posso ter vários tipos de arquivos (.png, .dat, .txt, .swf) na minha aplicação, desde que, eu não precise mudar estes arquivos (como uma galeria de imagens ou arquivos de log que eu queira ler ao longo do tempo), posso defini-los dentro do jar mesmo.
Agora, se você precisa que estes arquivos sejam gerenciados dinamicamente, vai precisar de alguma forma de gravação de informações dos mesmos (nome, extensão, local onde está), seja um simples txt ou uma tabela no banco de dados.
Como me parece que o teu caso é a primeira opção, crie uma pasta no projeto e nela coloque todos os arquivos que precisa (organize por tipo) e referencie os mesmos para cada necessidade específica.