Добавить файлы в банку во время выполнения - PullRequest
1 голос
/ 20 июля 2011

Проект по созданию exe-файла. Если мы запустим exe-файл, он откроет одну административную страницу (разработанную на Swing), которая содержит кнопку обзора, max install, max install sys и создать сборку, а при нажатии кнопки обзора нам нужно выбрать один exe-файл из системы и этот файл. необходимо сохранить его в одной папке файла JAR. Значение maxinstall, max install sys хранится в базе данных SQL lite. Эта страница администратора будет открыта только в первый раз, чтобы получить условия от администратора. Затем, если мы запустим exe-файл, он должен проверить maxinstall и все параметры, а затем установить выбранный exe-файл.

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

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

.. можно извлечь jar во время выполнения, добавить файл в извлеченный jar и создать новый jar во время выполнения ..?

Большинство JRE устанавливают блокировку файлов на банки. Поэтому они не могут быть обновлены во время работы JRE. Проверьте подкаталог user.home для измененной версии ресурса. Если это не найдено, используйте тот в Банке. Если он изменен, сохраните измененные данные в поддиректории.

Используйте подкаталог на основе имени пакета основного класса, чтобы избежать перезаписи ресурсов другого приложения. (или другие приложения. перезапись ваших ресурсов).

1 голос
/ 20 июля 2011

Я думаю, что понимаю вашу проблему.Ваше приложение сохраняет свое состояние в свой собственный файл JAR.тот факт, что вы используете SQLite и т. д. не имеет значения.Он работает из Eclipse, потому что в этом случае файлы классов и ресурсы не упаковываются в архив, и ваша программа легко меняет файлы в файловой системе.

Ответ: да, вы можете изменить файл jar программно.Баночка - это просто молния.Вы можете использовать ZipInputStream, ZipOutputStream, JarInputStream, JarOutputStream для изменения любого почтового индекса, включая ваш собственный.

Но это очень очень не рекомендуется по слишком многим причинам.Правильное решение - отделить ваши данные от вашего приложения.Вы должны хранить данные времени выполнения в файловой системе, БД и т. Д. Например, вы можете создавать файлы в домашнем каталоге пользователя.Это не зависит от платформы.Вы также можете использовать класс Preferences, который имеет переносимые реализации для всех платформ.

Еще одна причина сделать это - ваше требование создать exe.Хорошо, вы можете изменить файл jar, но как только вы создали exe-файл из вашего jar, вы больше не сможете его изменить.

0 голосов
/ 04 августа 2011

Файлы Jar не будут распознаваться внутри jar, потому что, как только исполняемый jar создан, он будет заблокирован, так что лучше вы можете извлечь зависимый jar и добавить в свой исполняемый jar. Он будет работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...