Хобрук: Ваш путь к мастерству в программировании

Как создать установщик после завершения работы с настольным приложением Java с базой данных MySQL?

Я закончил писать приложение Java Desktop с базой данных mySQL. Я хочу, чтобы приложение работало вне netbeans и позволяло устанавливать его на другие компьютеры. Я знаю о сборке проекта и создании исполняемого файла jar, однако для этого мне нужно экспортировать саму базу данных на другой компьютер, на котором я хочу, чтобы приложение запускалось. Мой вопрос состоит из двух частей:

1) Есть ли способ создать установочный файл, который также устанавливает базу данных и приложение вместе?

2) Кроме того, мой путь к базе данных жестко запрограммирован, означает ли это, что мне нужно менять код каждый раз, когда я устанавливаю свое приложение для кого-то, как лучше это сделать?

Спасибо


Ответы:


1
  1. Да. Вы можете использовать какой-нибудь конструктор настроек, например, InnoSetup. Однако лично мне нравится давать своим клиентам zip-файл, который они распаковывают куда угодно. Исполняемый jar должен уметь сам со всем справляться (мне нравится, когда нет необходимости устанавливать софт, просто распаковать и запустить).
  2. Если он жестко задан, то да (но что вы подразумеваете под жестко заданным? путь к файлу? IP-адрес?). Вы должны использовать свойства или файлы конфигурации для путей и других внешних вещей, от которых зависит ваше программное обеспечение. Программное обеспечение должно читать из этих файлов. При запуске проверьте наличие такого файла (файлов) - если он отсутствует, пользователю должно быть показано окно, в котором можно ввести конфиг.

Что касается развертывания MySQL с вашим кодом - рассмотрите возможность использования для этого сервера, чтобы ваши пользователи не были вынуждены устанавливать MySQL, вместо этого они подключались к ней по сети. Если вам нужна база данных только для локального хранения данных, почему бы не использовать SQLite или аналогичный механизм базы данных на основе файлов?

Приведенные выше ответы являются всего лишь предложениями и более-менее отражают то, как я думаю. Я был бы рад услышать от кого-то с большим опытом. Тем не менее, я надеюсь, что ответы немного помогут :)

27.05.2011
  • это URL-адрес, он находится на локальном хосте 3306, должен ли я просто оставить его таким и установить mySQL для моего клиента для быстрой установки? 27.05.2011
  • Это относится к локальному хранению данных, возможно, вы захотите рассмотреть SQLite, который - для я - это лучшая идея. Однако, если вы действительно хотите придерживаться MySQL, то URL-адрес, порт, имя пользователя и пароль должны храниться в каком-либо конфигурационном файле (пароль, очевидно, каким-то образом закодирован, поэтому он не хранится в открытом виде). Это, конечно, означает, что у каждого из ваших клиентов должен быть установлен MySQL. В конце концов, если вы находитесь в локальной сети, настройте сервер MySQL на одной машине и разрешите другим подключаться к нему. Таким образом, вам не нужно будет устанавливать клиенты для всех ваших пользователей, а только для одного. 27.05.2011
  • Большое спасибо, но еще один вопрос: относительно первого вопроса, который я задал, вы создаете zip всего проекта? Однако я не хочу, чтобы клиент имел доступ к коду Java, но сама папка jar не работает? 27.05.2011
  • Баночка может содержать только скомпилированные .class файлы. Затем файл .zip должен содержать только файлы jar, документацию, внешние библиотеки и т. д. Нет необходимости включать исходный код, если вы этого не хотите; как только код скомпилирован, его можно перемещать по компьютерам и платформам. Хотя можно перепроектировать файл .class, полученный код будет в основном нечитаемым. 27.05.2011

  • 2

    Соглашусь с Печаль.

    Если мне нужно использовать MySQL, я обычно делаю это через сеть, так как я не хочу, чтобы мои клиенты проходили через трудности установки MySQL самостоятельно. Однако, если вы застряли с использованием MySQL локально, исследуйте автоматические установки MySQL + установщик NSIS.

    Если вы можете использовать любую базу данных, которую хотите, я просто использую javadb/derby. В наши дни он поставляется в комплекте с большинством установок Java, и если вам не нужно всего лишь добавить файл jar в свое приложение.

    Что касается путей «жесткого кодирования», я действительно не понимаю, что вы имеете в виду. У вас действительно нет «путей», как это было, я предполагаю, что вы имеете в виду строку подключения. Вам не нужно жестко кодировать строку подключения, просто поместите некоторые параметры в файл свойств и создайте из них строку подключения.

    27.05.2011

    3

    1) Есть ли способ создать установочный файл, который также устанавливает базу данных и приложение вместе?

    См. мой ответ на автономное приложение на основе Java.

    2) Кроме того, мой путь к базе данных жестко запрограммирован, означает ли это, что мне нужно менять код каждый раз, когда я устанавливаю свое приложение для кого-то, как лучше это сделать?

    Попросите установщика БД открыть JFileChooser, чтобы спросить пользователя, куда он хочет установить БД. Сохраните этот путь с помощью API JNLP Служба сохранения. Вот моя демонстрация. службы сохранения.

    27.05.2011
    Новые материалы

    Абсолютно имеет смысл.
    Абсолютно имеет смысл. Мой репетитор даже предложил то же самое. Одна проблема, с которой я столкнулся, заключается в том, что для каждой из категорий не было ярлыка «хорошо». Если я перебираю..

    МАШИННОЕ ОБУЧЕНИЕ И EDA
    Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

    В чем основные различия между ReactJS и React-Native?
    В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

    LeetCode — Умножение строк
    Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..

    Как я могу подписаться на тему изображений в ROS Matlab и получить изображение RGB?
    Привет, Пожалуйста, как я могу извлечь изображение из сообщения ROS Image, за которым следует imshow? Я уже подписался на правильную тему, но message.getData() дает мне объект..

    Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
    Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

    Как интегрировать модель машинного обучения на ios с помощью CoreMl
    С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..