Pessoal, fiz uma aplicação Swing e após gerar o .jar não consegui mais manipular arquivos. O problema foi solucionado com um getResourseAsStream() para o .properties e getResourse() para imagens, Após clicar no .jar o programa pega as propriedades do .properties e os botões mostram os ícones. Beleza!
O GetResourseAsStream retorna um InputStream, o que dispensa o uso de um File(‘src/…’).
O problema é que para persistir as alterações no properties eu necessito de um OutputStream que pede um File como parâmetro. Como a aplicação roda pelo jar, ele não reconhece o caminho do File(’…///…’).
Alguém sabe uma forma de persistir no properties com algum tipo de getResourseAsStream que retorne u OutputStream, ou alguma forma válida de persistir no properties estando em uma aplicação executada pelo .jar? Os tutoriais do GUJ sobre properties e manipulação de arquivos não referiram-se sobre casos de aplicações compiladas em arquivos executáveis.
Alguém tem algum exemplo?
Persistir alterações em properties em programa executado pelo .jar
3 Respostas
Eu posso estar enganado (e nesse caso, alguém me corrija), mas acho que isso você não pode fazer… Está no JAR? Então é read-only, meu filho. A não ser que você possa (e lhe seja viável) usar java.util.zip.* aqui.
Arquivos de configuração “editáveis” são como recursos externos da aplicação, e mesmo que você possa editar arquivos em um .jar, eu acredito que seja melhor distribuí-los separadamente… (por várias razões).
Just my two cents!
Um properties só funciona se eu colocar o caminho absoluto no parametro do file, existe alguma forma de ter este properties fora do jar mas dentro da aplicação sem ter que fixar o properties sempre no mesmo lugar para que o cliente descompacte-o onde ele quiser?
Afinal, como foço para usar um properties em um programa que roda pelo .jar (qualquer forma é bem vinda… :lol: )
Se sua configuração é por usuário e não por máquina, e se você usar Java 1.4 ou posterior, você pode usar a classe java.util.prefs.Preferences. Ela guarda configurações no Registry (no caso do Windows) ou em arquivos XML (no caso do Linux).