Exception in thread "main" java.lang.ArrayIndexOut

3 respostas
S

Bom dia,

Estou com um programa que tem várias classes, ele foi desenvolvido no Netbeans 3.5, mas agora estou tentando trabalhar com ele no Eclipse 3.2.
Acontece que não consigo rodá-lo de dentro do eclipse, porque aparece a mensagem no console:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0 at Iniciar.main(Iniciar.java:16)

O código dessa classe Iniciar é:

public class Iniciar{    
    public static void main (String[] args){
        Login.start (args[0]);
    }
}

e o da classe Login, chamada pela Iniciar é:

import javax.swing.*;
import java.io.*;

public class Login{
    public static String sistema = "";
    public Login(){
        try{
            File file = new File(SistemaProps.getArquivoConfiguracao());
            CriaArquivo ca = new CriaArquivo(file);
            ca.createNewFolder(file);
            ca.createFileObject(file,"usuario.properties");
            try{
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            }catch(Exception e){
            }
        }catch(Exception e){
            Tratamentos.tratamentos(e);
        }
        Progress progress = new Progress();
        progress.showSplashScreen();
        new Thread(new Identificacao(progress)).start();
    }
    public static void main(String args[]){
        sistema = args[0];        
        new Login();
    }
    public static void start(String sis){
        sistema = sis;
        new Login();
    }
}

Alguém sabe me dizer o que tenho que fazer para conseguir rodar esse programa?

3 Respostas

S

Não sei como fazer isso rodar no eclipse. Daí quando preciso de passar parâmetros via linha de comando eu compilo o meu código java e rodo via console MS-Dos:

C:\Users\Sech777>javac MinhaClasse.java

C:\Users\Sech777>java MinhaClasse argumento0

Quando vc compila no eclipse o array args[] não tem “length” pois ainda não foi passado nenhum parâmetro a ele, logo, invocar args[0] é impossível, daí o eclipse gera o erro. Entretanto, mais uma vez digo, não sei como passar esse tipo de parâmetro ao eclipse, porém taí uma dica d como fazer rodar…

J

Você precisa passar um argumento para a aplicação, caso você não passe nenhum argumento, ex:

java Iniciar

Não existirá o indice 0 do array e por isso dá ArrayIndexOutOfBoundsException.

Ex.:

java Iniciar argumento1

Para passar argumentos para o programa no Eclipse, vá em Run --> Run, selecione o seu programa na arvore da esquerda, na aba “Arguments”, coloque o argumento em “Program Arguments”.

O ideal tambem é fazer um teste para ver se o argumento foi passado ou não, ex.:

public class Iniciar{ public static void main (String[] args){ if(args.length>0){ Login.start (args[0]); }else{ System.out.println("Informar o argumento."); } } }

S

Valeu, deu certo a dica do colega, problema resolvido!

Criado 10 de maio de 2007
Ultima resposta 10 de mai. de 2007
Respostas 3
Participantes 3