powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при первом запуске jar файла
6 сообщений из 6, страница 1 из 1
Ошибка при первом запуске jar файла
    #39313059
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, написал программку и упаковал её в jar файл, но при первом его запуске(после перезагрузки компьютера) - появляется непонятная ошибка, которую не могу отследить, так как ошибка проявляется только при запуске самого jar файла, а если запускать программу из средства разработки ошибки не возникает.
При последующих запусках, всё работает нормально.
Дальше больше, решил вывести сообщение об ошибке в лог файлы, но хз почему, лог файлы не появились и сообщения(см. код) не показались, запустил ещё раз - всё нормально(т.е. прога запустилась нормально и ошибку не удалось установить).
Т.е. возникает какое-то исключение + точно FileNotFoundException - но непонятно почему. Файл есть, что за другая ошибка вообще непонятно.
Подозреваю что что то связанное с инициализацией самой java машины - т.е. может какая-то java библиотека не успевает загрузиться и десерилизация нормально не проходит. А при повторных запусках всё нормально.
Сама функция вызывается ещё через одну функцию, которая вызывается из конструктора.

По логике этой функции, при первом запуске, если не удаётся найти файл статистики, значит первый запуск программы(вообще первый запуск, а не только первый запуск при загрузке компьютера) - и создаётся файл статистики. Но опять же, при первом запуске, при загрузке компьютера, файл статистики не создаётся, т.е. из-за этой ошибки не записать не считать файл не удаётся.
Переменная STATA_FILE - не содержит никаких путей, просто название файла, который лежит в одном каталоге с jar файлом программы.
Помогите разобраться в чём причина ошибки.
Может ли быть это связанно с тем что на компьютере установлено несколько разных java машин на 64 и на 32 ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
    // Загружаем файл статистики
    private synchronized boolean loadStoredStataObj() {
        try {
            FileInputStream fis = new FileInputStream(STATA_FILE);
            ObjectInputStream ois = new ObjectInputStream(fis);
            this.sStata = (MonitorStat[]) ois.readObject();
            ois.close();
            fis.close();
            return false; // Не первый запуск
        } catch (FileNotFoundException e) {

            // Отлавливаем ошибку в лог
            File file = new File("stat_err.log");
            PrintStream ps = null;

            try {
                ps = new PrintStream(file);
            } catch (FileNotFoundException fnf) {
                fnf.printStackTrace();
            }

            e.printStackTrace(ps);

            saveStoredStataObj(); // Первый запуск, сохраняем файл статистики проинициализированным массивом
            System.out.println("Файл статистики не найден");
            //JOptionPane.showMessageDialog(null, "Файл статистики не найден", "", 2);
            return true; // Первый запуск, настроек ещё нет
        } catch (Exception exc) {

            // Отлавливаем ошибку
            File file = new File("stat_err2.log");
            PrintStream ps = null;

            try {
                ps = new PrintStream(file);
            } catch (FileNotFoundException fnf) {
                fnf.printStackTrace();
            }

            exc.printStackTrace(ps);

            saveStoredStataObj(); // Первый запуск, сохраняем файл статистики проинициализированным массивом
            System.out.println("Ошибка");
            JOptionPane.showMessageDialog(null, "Ошибка загрузки файла статистики", "", 2);
            exc.printStackTrace();
            return true; // Первый запуск, настроек ещё нет
        }


    }
...
Рейтинг: 0 / 0
Ошибка при первом запуске jar файла
    #39313090
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tashТ.е. возникает какое-то исключение + точно FileNotFoundException - но непонятно почему. Файл есть, что за другая ошибка вообще непонятно.
Нам предлагается угадать "какое-то исключение" и "другую ошибку"? Или вы соизволите их залогировать и привести?

ali_tashПодозреваю что что то связанное с инициализацией самой java машины - т.е. может какая-то java библиотека не успевает загрузиться и десерилизация нормально не проходит. А при повторных запусках всё нормально.

Ерунда.

ali_tashМожет ли быть это связанно с тем что на компьютере установлено несколько разных java машин на 64 и на 32 ?

Нет.
...
Рейтинг: 0 / 0
Ошибка при первом запуске jar файла
    #39313231
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да в том то и дело, что приведённый код, почему то, при первом запуске когда должна появиться ошибка не логгирует ничего.
И почему появляется FileNotFoundException - если файл есть ? почему только при первом запуске ?
...
Рейтинг: 0 / 0
Ошибка при первом запуске jar файла
    #39313350
mrWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ali_tashрешил вывести сообщение об ошибке в лог файлы, но хз почему, лог файлы не появились и сообщения(см. код) не показалисьА где у вас собственно запись в этот лог файл?
(Добавьте нормальную систему логирования вместо этого велосипеда)

Перед выводом сообщения у вас идет вызов saveStoredStataObj(). Что там происходит неизвестно, код то вы не привели. Но раз вывода в консоль не было, значит ошибка именно там и до строки System.out.println("Файл статистики не найден") дело просто не доходит.
...
Рейтинг: 0 / 0
Ошибка при первом запуске jar файла
    #39313378
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tash,

- Используйте конструкцию try with resource, чтобы правильно закрывать файлы.
- Используйте API или библиотеки для логирования, вместо вывода в out процесса.
- Используйте File.exists() вместо FileNotFoundException.
- Не пишите огромные catch блоки - выносите код в методы. В catch блоке должно быть максимум 2 строки. Одна - логирование - вторая действие.
- Не мешайте UI и работу с классами в одну кучу.

Уверен что ваш код можно сократить раза в три. Вы раздули простейшую задачу до целого экрана из-за чего решительно не понятно что этот метод вообще делает.
...
Рейтинг: 0 / 0
Ошибка при первом запуске jar файла
    #39313613
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, надо было так сделать.

Только не понятно, почему с первого раза файл без указания директории не цепляется, а со второго цеплялся нормально.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
       File file = null;
 
        try {
            file = new File(App.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
            folder = file.getParent();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
 
.....
 
           FileInputStream fis = new FileInputStream(folder + File.separator + STATA_FILE);
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка при первом запуске jar файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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