Como faço para ler um arquivo .properties em um .jar

cara olha um plugin pro eclipse que chama fatjar.

Vou dar uma olhada. Vc acha que o problema pode esta sendo na geração do meu .jar pelo NetBeans 5.5???

Cara já sei… o problema é que vc não pode/deve usar File quando acessa algo que esta dentro do JAR.

Use esse código:

    public Properties getProperties(){
        InputStream is;
        Properties prop = new Properties();
        
        try {
            // le o arquivo
            is = Thread.currentThread().getClass().getResourceAsStream("/Access.properties");
            prop.load(is);
            
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        return prop;
        
    }

Testa ai que esse vai funcionar! :slight_smile:

AAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEE… LUIZ AGUIAR, ESSE É O CARA, FUNCIONOU MESMO CARA, VALEU PELA AJUDA, DEVO O MEU TRAMPO PARA VC… VALEU VELHO PELA AJUDA E PELA ATENÇÃO… AGORA DOS 3 PROBLEMAS FALTAM APENAS DOIS HEHEHEHEHEHEHE, OS TRES ERAM:

  1. Rodar o sistema pelo arquivo .jar - RESOLVIDO PELO MESTRE LUIZ :lol: AGUILAR
  2. Vc sabe como que eu faço para não precisar copiar os libs e o meu .jar, ou seja, gostaria de colocar apenas o .jar e rodar o sistema, sem precisar copiar a pasta dos libs juntos.
  3. Vc sabe como que eu faço para salvar o meu properties dentro do meu jar, ou seja, eu teria uma tela de instalação onde eu configuraria o meu properties para depois rodar o sistema…

OBS: Vc acha que eu devo abrir um tópico para cada dúvida minha (2 e 3)…

MAS MESMO ASSIM VALEU PELA DEDICAÇÃO CARA, FUNCIONOU BLZ. VC SABE COMO QUE EU RESOLVO OS 2 PROBLEMAS RESTANTES???

Que isso, estamos aqui pra ajudar mesmo.

Olha só, quando eu resolvi esse primeiro problema seu, logo em seguida eu teve esses exatos outros 2 problemas tbm hehe :smiley:

O que eu fiz foi o seguinte:
1 - Com algum plugin, como o FatJar do eclipse, vc gera um .jar com as libs descompactadas dentro, eu fiz isso com um pligin com do IntelliJ IDEA, mas pro eclipse vc consegue tbm.
2 - Cara vc não pode (até consegue com muuuuuita gambiarra) gravar nada dentro do .jar que esta rodando, o que eu fiz como alternativa foi grava esse properties, no direório do usuário que esta rodando o aplicativo:

    public Object[] getConfiguracoes(){
        Object[] o = new Object[2];
        
        try {
            
            File file;
            FileInputStream fis;
            Properties config = new Properties();
            
            // le o arquivo
            String home = System.getProperty("user.home") + "\\";
            file = new File(home + ".arquivos.config");
            if (!file.exists()){
                FileWriter fw = new FileWriter(file);
                fw.flush();
                fw.close();
                file = new File(home + ".arquivos.config");
            }
            fis = new FileInputStream(file);
            config.load(fis);
            
            o[0] = config;
            o[1] = file;
            
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        return o;
    }

Veja que esse Object[] ai é algo específico que eu precisei utilizar aqui pro meu aplicativo, o demais vc consegue usar ai no seu caso, sem nem alterar nada, só o nome do arquivo é claro… hehe
Ai vc pode colocar o retorno do metodo como um Propertie se quiser, e altera como no outro exemplo (problema 1) pra ele converter num propertie.

:smiley:

qualquer coisa é só gritar!

1 curtida
Valeu Cara pelas dicas, todas por enqto estão dando certo, valeu mesmo pela preocupação e dedicação....

:thumbup: :thumbup:

Luiz olha eu denovo aqui hehehehehehe,

Cara, a parada é o seguinte, dos meus 3 problemas vc conseguiu resolver 2 hehehehehehehehe. Agora só estou com o probleminha para gerar o meu .jar com as minhas libs. Porque a parada é o seguinte, quando eu gero pelo NetBeans 5.5 ele vai blz, mas ele cria tbm uma pasta lib, a qual eu sempre tenho que por junto, foi ai q eu comentei com vc como eu faria para por tudo dentro do meu .jar e vc comentou comigo para eu utilizar o Fatjar. Ai abaixei ele para o eclipse e seguindo o tutorial fiz igual, Peguei o meu jar criado por ele e ele me apresentou o seguinte erro ao executar:

30/03/2007 11:18:48 java.until.jar.Attributes read
WARNING: Duplicate name in Manifest: SHA1-Digest
30/03/2007 11:18:48 java.until.jar.Attributes read
WARNING: Duplicate name in Manifest: Digest-Algorithms
30/03/2007 11:18:48 java.until.jar.Attributes read
WARNING: Duplicate name in Manifest: MD5-Digest
Duplicate name is Manifest: SHA1-Digest
Failed to load Main-Class manifest attribute from Sistema_fat.jar

Vc sabe o que pode estar acarretando esse erro??? :frowning: