java.lang.ArrayIndexOutOfBoundsException: ошибка 0 в Eclipse для программ, которые работают с помощью командной строки?

Итак, мне удалось заставить Eclipse работать (что нам нужно использовать на нашем экзамене). Я импортирую и запускаю некоторые из моих программ, которые я написал с помощью gedit, и запускаю их с помощью командной строки (что сработало), но они, похоже, не работают в Eclipse.
Моя программа Hello World работала, но мои другие, похоже, работали. выдавать ошибки относительно аргументов?

package week1;

public class PersonalGreeting {

    public static void main(String[] args) {
        String first_name = args[0];
        String last_name = args[1];
        System.out.println("Hello " + first_name + " " + last_name);
    }
}

Ошибка:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0  
    at week1.PersonalGreeting.main(PersonalGreeting.java:6)

Любые идеи, как это исправить и в чем причина? Почему это должно работать в командной строке, но не в Eclipse?


person Wolff    schedule 07.02.2014    source источник
comment
Вы передаете какой-либо параметр через конфигурацию запуска Eclipse?   -  person Vishal Santharam    schedule 07.02.2014
comment
Надеюсь, это научит вас писать свои программы таким образом, чтобы они никогда не умирали из-за отсутствия или неверных параметров командной строки. В частности, доступ к массиву неизвестного размера просто вызывает проблемы.   -  person Ingo    schedule 07.02.2014


Ответы (5)


Eclipse не передает параметры, как это делает командная строка.

Вам нужно будет перейти к конфигурации запуска (щелкните правой кнопкой мыши проект -> Запуск от имени -> Конфигурации запуска и выберите свое приложение). Вы должны нажать «Аргументы» и ввести свои аргументы в поле «Аргументы программы», а затем нажать «Выполнить».

person Vlad Schnakovszki    schedule 07.02.2014
comment
Это то, что я ищу! Я должен признать, что это довольно неприятно, хотя... Я привык вводить различные входные данные в командной строке во время ее написания, чтобы увидеть, работает ли она и что мне нужно изменить. Это кажется довольно утомительным процессом! - person Wolff; 07.02.2014

То есть, потому что вы не указываете никаких параметров метода. Когда вы запускаете свою программу из консоли, вам нужно ввести имя и фамилию, которые отсутствуют в eclipse, поэтому IndexOutOfBoundsException.

Чтобы решить эту проблему, сделайте следующее: щелкните правой кнопкой мыши свой проект. выберите запуск как. перейти к запуску конфигураций. Введите имя и фамилию в качестве аргументов программы на вкладке аргументов.

person Kayz    schedule 07.02.2014

Я бы определенно передал ему некоторые параметры. Вы можете сделать это с помощью конфигурации запуска eclipse. Посмотрите на меню «Выполнить» в разделе «Выполнить конфигурации». Перейдите на вкладку «Аргументы» и задайте некоторые аргументы программы перед повторным запуском.

РЕДАКТИРОВАТЬ: Кстати, когда вы просите eclipse запустить вашу программу, не сообщая ей никаких дополнительных сведений, она создает конфигурацию запуска по умолчанию для программы, которая затем появляется в списке конфигураций запуска. Я бы подумал о том, чтобы выпустить команду запуска и ожидать некоторую ошибку в выводе в качестве общего шаблона использования с eclipse - просто легко получить конфигурацию запуска, созданную таким образом, а затем отредактировать ее, чтобы она имела все, что нужно, чтобы быть счастливым, насколько далеко в качестве аргументов программы, переменных среды и т. д.

person unigeek    schedule 07.02.2014

Похоже, программа не получила ожидаемые параметры командной строки. Посмотрите на свою конфигурацию выполнения внутри Eclipse, чтобы передать обязательные параметры любой программе командной строки, которую вы написали.

person Jorge_B    schedule 07.02.2014

public class PersonalGreeting {

 public static void main(String[] args) {
  String first_name = "";
  String last_name = "";
  if (args.length > 0){
       first_name = args[0];
       if (args.length > 1) last_name = args[1];
  }else{
       first_name = "parameters";
       last_name = "are missing";
  }
  System.out.println("Hello " + first_name + " " + last_name);
 }
}

попробуй отловить ошибки

person tr4pt    schedule 07.02.2014