Problema com path quando cria o JAR

1 resposta
A

opa galera,

estou com um problema aqui e nao to conseguindo resolver, quando crio o JAR o jogo não procura a fase ( eh um arquivo de texto que contem informaçoes para montar a fase) dentro do JAr na pasta levels, ele procura no mesmo diretorio que o jar, eu sei que eh um problema de path mais nao to conseguindo resolve.

Informação não sei se vai ajudar

LabelArq.setText("Digite o nome da Fase: ");
         LabelArq.setBounds(new Rectangle(20, 5, 150, 20));
         TxtArq.setBounds(new Rectangle(180, 5, 120, 20));

Codigo Versao original

public void actionPerformed(ActionEvent a) {
                 try {
                     //Tenta abrir o arquivo para leitura                                
                     FileReader leitor = new FileReader(TxtArq.getText());
                     Engine i= new Engine();
                     i.LeArq(leitor);
                     leitor.close();
                     startTime();
                     jPanel1.requestFocus();
                 }
                 catch (IOException q) {
                     JOptionPane.showMessageDialog(null,"Erro ao tentar carregar a fase!","Erro",JOptionPane.INFORMATION_MESSAGE);
                 }
             }
         });
         
         TxtArq.addActionListener(new ActionListener(){   
         public void actionPerformed(ActionEvent e) {
         jPanel1.requestFocus();
         }
         });

Algumas tentativas de arrumar

ButtonLoad.addActionListener(new ActionListener() {       
             /**
              * Le Arquivo passado pelo usuario apos clique no Botao Carrega.
              */            
             public void actionPerformed(ActionEvent a) {
                 try {
                     //Tenta abrir o arquivo para leitura
                     String path = getClass().getResource("levels/"+TxtArq.getText()).getFile();
                     System.out.println(path);
                     FileReader leitor = new FileReader(path);
                     Engine i= new Engine();
                     i.LeArq(leitor);
                     leitor.close();
                     startTime();
                     jPanel1.requestFocus();
                 }
                 catch (IOException q) {
                     JOptionPane.showMessageDialog(null,"Erro ao tentar carregar a fase!","Erro",JOptionPane.INFORMATION_MESSAGE);
                 }
             }
         });

ele consegue puxar a fase sozinho quando executo pelo netbeans, ( antes tinha que passar "build/classes/levels/br.txt") quando executava pelo netbeans.
so que ainda nao funfa quando crio o Jar e executo a partir do jar =(

quando executo pelo JAR usando essa modificação acima teho uma saida assim do meu print

qa@diogo:~/starworms/dist$ java -jar starworms.jar 
 file:/home/qa/starworms/dist/starworms.jar!/levels/br.txt

outra tentativa

String path = ("/levels/"+TxtArq.getText());
 URL realPath = getClass().getResource(path);
 System.out.println(realPath);
 FileReader leitor = new FileReader((realPath).getFile());

Saida no terminal

qa@diogo:~/starworms/dist$ java -jar starworms.jar 
 jar:file:/home/qa/starworms/dist/starworms.jar!/levels/br.txt

1 Resposta

C

é só arrumar essa linha…

//Tenta abrir o arquivo para leitura String path = getClass().getResource("levels/"+TxtArq.getText()).getFile();
Vamos supor que vc tem a seguinte estrutura de diretórios…

level.TxtArq.txt

use …

File f = getClass().getResource("level/TxtArq.txt").getFile();

Agora eu só não lembro se precisar colocar a barra… /leveç/Tx… ou só com level.Tx… funcionsa, só testar :smiley:

Criado 31 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 1
Participantes 2