Запустите файл передачи кода Java в качестве входного аргумента в Intelij IDEA от Jetbrain.

Я пытаюсь запустить код Java, используя Intelij IDEA, передавая файл .txt в качестве аргумента.

Я следил за этим обсуждением, но это мало помогло Run Программа из IntelliJ с вводом файла из командной строки

Кроме того, я попробовал ТОЧНО то же самое (я думаю ...) на другом компьютере, и это сработало, но на моем персональном компьютере у меня более новая версия Intelij, и некоторые мелочи отличаются. Не знаю, то ли что-то изменилось, то ли я что-то не так делаю...

Вот мой код:

 public static void main(String[] args) {
        // read the n points from a file
        StdOut.println("Args: " + Arrays.toString(args));
        StdOut.println("Args: " + args[0]);
    }

Мои конфигурации:

запустить конфигурацию

И вывод:

Args: []
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
    at BruteCollinearPoints.main(BruteCollinearPoints.java:89)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:128)

Process finished with exit code 1

Если я запускаю этот код в консоли, все идет нормально.


person Pedro Almeida    schedule 02.06.2020    source источник


Ответы (2)


Вы должны указать путь к файлу в разделе «Аргументы программы» вместо «Перенаправить ввод из», как описано в этом ответе https://stackoverflow.com/a/32951928/3012352

Опция «Перенаправить ввод из» позволит вам перенаправить поток ввода (stdin) в вашу программу из предоставленного файла. https://www.jetbrains.com/help/idea/run-debug-configuration-application.html

person CharanM    schedule 02.06.2020
comment
но я хочу ТОЧНО передать содержимое файла в качестве аргумента моей программе. Если я передаю аргументы в разделе «Аргументы программы», все работает нормально. - person Pedro Almeida; 02.06.2020

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

person Arif Akkas    schedule 02.06.2020
comment
Я это уже пробовал. Я получаю этот вывод в этом случае: Args: [/media/home/home/code/courses/coursera-algorithms-part1/week3/programmingAssignment3Collinear/input10.txt] Args: /media/home/home/code/courses/coursera-algorithms-part1/week3/programmingAssignment3Collinear/input10.txt - person Pedro Almeida; 02.06.2020
comment
Я не мог понять точно. Я предполагаю, что проблема связана с путем к файлу. Этот ответ может решить вашу проблему. stackoverflow.com/a/32953179/10837115 - person Arif Akkas; 02.06.2020
comment
Объясню: когда я передаю имя файла в аргументах программы, программа использует путь КАК аргумент. Мои args[0] стали строкой с путем к файлу вместо содержимого файла. - person Pedro Almeida; 02.06.2020
comment
Я понимаю. main содержит аргументы в массиве String. Все, что вы передаете, будет распознано как строка. Вы можете легко использовать fileoutputstream для получения содержимого переданного файла. Вы можете найти соответствующий пример по этой ссылке. cs.swarthmore.edu/~newhall/unixhelp/Java_files.html - person Arif Akkas; 02.06.2020