powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Считывание
6 сообщений из 6, страница 1 из 1
Считывание
    #38467312
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, форумчане!
Возникла проблема со считыванием данных из открытого проекта и при запуске jar-ника.
В открытом, например в eclipse, проекте для считывания данных пишу вот такой код:

Код: java
1.
2.
1
Scanner scanner = new Scanner(new File(profilesPath));



profilesPath - просто путь к необходимому файлу, находящемуся во внутренней папки проекта.
Например String profilesPath = "data.txt";
Если сделать из проекта jar-ник и запускать его, то такое считывание не работает. Приходится менять код на следующий:

Код: java
1.
2.
InputStream resStream = BigB.class.getResourceAsStream(profilesPath);
    Scanner scanner = new Scanner(resStream);



Здесь profilesPath - это тот же путь к файлу, только в начале добавлен слеш. Например String profilesPath = "/data.txt";
Вопрос - можно ли сделать что-то универсальное, что работало бы и в открытом проекте и в jar-нике и не нужно было бы дописывать слеши?
...
Рейтинг: 0 / 0
Считывание
    #38467316
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
File это API для работы с файловой системой.
getResourceAsStream() это метод чтения ресурсов вашего проекта. Он работает в IDE точно так же как и в дистрибутиве.
Наличие или отсутствие слеша в пусти к ресурсу влияет на то где этот ресурс ищется. Об этом в докуметации написано.
...
Рейтинг: 0 / 0
Считывание
    #38467328
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда вот чего не пойму:
Запускаю в eclipse программу, в которой доступ к файлу устроен так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
				
InputStream resStream = DSP.class.getResourceAsStream(campaignsPath[i]);
if ( resStream == null ){
        System.out.println("resStream == null: " + campaignsPath[i]);
} else { 
	System.out.println("resStream != null: " + campaignsPath[i]); 
}
Campaign campaign = (Campaign) UnmarshallingClassJAXB.createUnmarshaller().unmarshal(resStream);



Здесь файл XML, который хочу десериализовать.
campaignsPath[i] = "/Campaign_1.xml"
Вылезает одна и та же ошибка:
Код: java
1.
java.lang.IllegalArgumentException: is parameter must not be null


Если писать так: campaignsPath[i] = "Campaign_1.xml", то ошибка все-равно остается
...
Рейтинг: 0 / 0
Считывание
    #38467329
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скопировала ли ваша IDE файл к классам? Где находится файл относительно приведенного класса DSP?
...
Рейтинг: 0 / 0
Считывание
    #38467331
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл "Campaign_1.xml" положил прям в корень проекта.
Абстрактный класс DSP расположен в пекедже DSP.
...
Рейтинг: 0 / 0
Считывание
    #38467352
Стас0н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего никуда не скопировалось... Что же делать?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Считывание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]