Недавно я создал программу для анализа некоторых данных из входных файлов (csv и json). Вся программа упакована в банку с помощью Maven. Файлы примеров хранятся в папке ресурсов. Эти примеры файлов используются во время тестирования (и упаковки), но также упаковываются в jar. Программа принимает путь к файлу в качестве параметра (или массив путей). Я хотел бы, чтобы эти файлы внутри jar были одним из вариантов, на которых вы можете запустить программу - чтобы пользователь мог передать путь к этим файлам внутри jar и запустить программу на них.
Работает на Unix системе. И запуск тестов, и запуск программы из jar. Но я столкнулся с проблемами во время тестирования на Windows. Тесты выполняются правильно с момента изменения полей stati c final (содержащих ссылки на эти файлы) с String paths на File "paths". Я читал на Apache сайте - я верю - это помогло бы, и это действительно помогло.
Я получаю доступ к этим файлам как InputStream с помощью метода getResourceAsStream, но не только с помощью этого метода. Я создал НЕ симпатичный класс, пробующий разные способы доступа к этим файлам. Сейчас я пытаюсь выяснить, как правильно перейти к запуску jar-файла на Windows. Простой "/csv/employees.csv" работает на Unix, но не работает на Windows. Я перепробовал много вариантов, и у меня нет идей. Может быть, я должен создать какой-то другой способ InputStream? Может быть, я должен использовать один из новых классов?
Ссылка на репозиторий: https://github.com/axal25/EmployeeSalaries
Ссылка на НЕ-симпатичный класс, создающий InputStreams: https://github.com/axal25/EmployeeSalaries/blob/master/src/main/java/file/ops/InputStreamOps.java
PS Я также приветствую другие советы и приемы, которые я должен был использовать, но сейчас я действительно стремлюсь к полностью рабочей версии этой программы - как для Windows, так и для Linux.