Страницы

Поиск по вопросам

пятница, 2 ноября 2018 г.

Написал программу (тестовая задача) от потенциального работодателя. Как её отправить?

Java, Intellij IDEA
Написал программу. На вход даются файлы: *.tsv, *.xml На выходе получить *.txt вариант таблицы
Полтора дня писал программу. Когда запускаю итоговый вариант в IDE через "Edit configuration...", всё замечательно компилируется и выдаётся тот самый заветный файл.тхт.
Но крайнее требование в ТЗ, чтобы программа выдавала файл посредством вызова команды в терминале типа:
java Name.class file.xml file.tsv result.txt
И вот тут я завис окончательно, потому что из директории ./out/../Name.class эта команда выдаёт
Could not find or load main class Name.class
Потеряв надежду (было много попыток и гугла ~10-15 минут), решил запилить jar файл и тупо отправить его HRу.
Но чего-то передумал и решил написать сюда. Git я знаю на уровне init, commit, status, add т.е. только на уровне сохранить у себя. Пытался
git add --all
но он оказывается не хочет добавлять папки (онли файлы)
fatal: CRLF будет заменен на LF в settings.xml.
Напишите пожалуйста:
Откуда (директория) всё-таки нужно запускать java Name.class... и что перед этим может нужно сделать в IDEA (экспортировать/импортировать/...)? Каким путём отправить файл HRу (общались по почте)?
PS: ноутбук к нему не понесу PPS: у меня стоит Debian


Ответ

Не обязательно собирать jar для запуска программы. По сути jar является лишь архивом, содержащим в себе все скомпилированные файлы (с расширением .class), а также файл манифеста, в котором помимо всего прочего указано, с какого класса начать запуск программы (в каком из классов имеется нужный метод main).
Как запустить jar уже описывали выше. А для того, чтобы запустить программу не из пакета, а ту, которая просто скомпилирована в виде файла .class необходима следующая команда:
java {ClassName} {arguments}
где ClassName - полный путь до класса, включая имя пакета, если он есть. Кроме того, скомпилированный файл, соответствующий указанному классу должен быть расположен в папке, соответствующей пакету:
например, если есть файл Test1.class (с классом Test1 без пакета) - строка запуска будет java Test1 из той же папки; если есть файл Test2.class (соответственно с классом Test2 и указанием пакета org.sample) - запуск будет осуществляться командой java org.sample.Test2, а файл Test2.class должен лежать в папке org/sample относительно места, откуда производится запуск.
Надеюсь, это будет полезно.

Комментариев нет:

Отправить комментарий