Aplicação nao roda no servidor Linux, mas roda localhost

3 respostas
B

Pessoal,
Estou tentando rodar minha aplicação num servidor com Linux e nao sei onde esta o problema.
Quando rodo o codigo abaixo no localhost funciona normalmente. É criado um diretorio temporário chamado “temp”, onde os arquivos txt são gerados, zipados e depois que o usuário salva o arquivo zip, o diretorio “temp” é deletado. Aki vai um trecho do codigo que roda localhost:

...  //select gerando uma listaFuncionario :?:

            final Integer TAM_ARQ = listaFuncionario.size();  
            Integer j = (TAM_ARQ / 5000); 
            final Integer TOTAL_ARQ = j >= 0 ? j+1 : j;  
            PrintWriter [] arquivosGerados = new PrintWriter[TOTAL_ARQ];  

            File dirAtual = new File("");  
            File dirTemp = new File(dirAtual.getAbsolutePath(),"temp");                 //c:\Ferramentas\eclipse\temp   :?:
            dirTemp.mkdir();                                                                           //cria o diretório temp        :?:
            String nomeArquivo = dirTemp.getAbsolutePath()+"\FPSFP056";      //c:\Ferramentas\eclipse\temp\FPS056       :?:
            for(int i = 0; i < TOTAL_ARQ; i++){
                //arquivos FPS056-1.txt e etc gerados por enquanto vazios
                arquivosGerados[i] = new PrintWriter(new FileOutputStream(nomeArquivo+"-"+(i+1)+".txt"));            
            }            
            ...
            Integer TEMP_TAM_ARQ = TAM_ARQ;
            for(int i = 0; i < TOTAL_ARQ; i++){  
                Integer sequencial = 1; 
                StringBuffer header = new StringBuffer();
                StringBuffer detalhe = new StringBuffer();
                StringBuffer trailer = new StringBuffer();
                StringBuffer registro = new StringBuffer();
                ...    //preenchimento dos Stringbuffer
                String total = TEMP_TAM_ARQ+"";  
                sequencial += 1; 
                trailer.append("9").append(zeros.substring(0,5-total.length())+TEMP_TAM_ARQ).append(brancos.substring(0,595)).
                               append(zeros.substring(0,7-sequencial.toString().length())+sequencial);  
                registro.append(header).append(detalhe).append(trailer);
                //iniciar processo de geracao do arquivo...
                String [] linhas = registro.toString().split("\r\n"); 
                for(int l = 0; l < linhas.length; l++)
                    arquivosGerados[i].println(linhas[l]);    //preenchimento dos arquivos FPS056-i.txt
                arquivosGerados[i].close();
            }

Eu quero fazer o mesmo no servidor Linux. Ja tentei colocar o caminho direto, conforme trecho do codigo abaixo, mas nada adiantou. Tentei criar uma classe contendo 2 atributos do tipo String contendo o caminho completo p/ cada situação mas tb nao funcionou. O que posso estar errando?

File dirAtual = new File("");  
            File dirTemp = new File(File.separator+"opt"+File.separator+"pasep"+File.separator,"temp");  // \opt\pasep\temp  :?:
            dirTemp.mkdir();                                                                                                             //cria o diretório temp        :?:
            String nomeArquivo = File.separator+"opt"+File.separator+"pasep"+File.separator,"temp"+File.separator+"FPSFP056";     
                                               // \opt\pasep\temp\FPS056 :?:
            for(int i = 0; i < TOTAL_ARQ; i++){
                   arquivosGerados[i] = new PrintWriter(new FileOutputStream(nomeArquivo+"-"+(i+1)+".txt"));            
            }

Agradeço a quem ajudar.

3 Respostas

robertwgil

Pode ser problema de permissão
E talvez vc precise verificar se a pasta já não existe antes de dar o mkdir novamente.

Fazendo arquivo de exportação? rsrsrs

elias_era

Ele chega a criar a pasta? Se o java criou a pasta, ele geralmente tem permissão para escrever nela. Vê se o usuário Java tem direito de escrever na pasta onde ele está, tipo se el está em “var/www”, veja se ele pode escrever na pasta www

B

Pessoal, desculpe a demora na resposta. Agradeço as respostas comentadas, mas o problema não era permissão (arquivo de exportação pasep é horrível mesmo rs).
Consegui a seguinte solução (não sei se foi a melhor escolha): Criei uma classe com 2 atributos do tipo String, contendo os caminhos para cada situação (localhost ou servidor). No codigo só alterei o seguinte trecho:

File dirAtual = new File(""); 
            File dirTemp = new File(NovaClasse.pasepPath,"temp"); 
            dirTemp.mkdirs();
            String nomeArquivo = NovaClasse.pasepPath+File.separator+"temp"+File.separator+"FPSFP056";  
            for(int i = 0; i < TOTAL_ARQ; i++)
                arquivosGerados[i] = new PrintWriter(new FileOutputStream(nomeArquivo+"-"+(i+1)+".txt"));

O único problema agora é que tá gerando uma linha em branco no final do arquivo txt, o que causa erro ao validar o arquivo.

for(int i = 0; i < TOTAL_ARQ; i++){   
                Integer sequencial = 1; 
                StringBuffer header = new StringBuffer();
                StringBuffer detalhe = new StringBuffer();
                StringBuffer trailer = new StringBuffer();
                StringBuffer registro = new StringBuffer();
                ...
               detalhe.append(zeros.substring(0,7-sequencial.toString().length())+sequencial);
               detalhe.append("\r\n");
       } 
                String total = TEMP_TAM_ARQ+"";  
                sequencial += 1; 
                trailer.append("9").append(zeros.substring(0,5-total.length())+TEMP_TAM_ARQ).append(brancos.substring(0,595)).append(zeros.substring(0,7-sequencial.toString().length())+sequencial);
                registro.append(header).append(detalhe).append(trailer);
                //iniciar processo de preechimento do arquivo txt...
                String [] linhas = registro.toString().split("\r\n"); 
                for(int l = 0; l < linhas.length; l++)
                    arquivosGerados[i].println(linhas[l]);
                arquivosGerados[i].close();
            }
            // A partir daqui começa o processo zip

Alguém pode me dar um help de onde estou errando para poder tirar essa linha em branco gerada no final?
Agradeço as ajudas.

Criado 16 de setembro de 2010
Ultima resposta 29 de set. de 2010
Respostas 3
Participantes 3