Скомпилируйте javacode из запущенной java-сборки - в системе, в которой не установлен JDK

1

В настоящее время я пишу на инструменте, основанном на клиентском сервере. Из-за нестабильных IP-адресов моя идея - позволить серверу-приложению компилировать клиентское приложение с правильным IP-адресом сервера.

Шаг за шагом:

  1. Запускается серверное приложение.
  2. Пользователь смотрит, какой текущий IP-адрес его сервер-компьютер (это можно сделать вручную через веб-браузер).
  3. С помощью этого IP-кода он создает (компилирует) клиент, который ищет соединение с этим IP-адресом (после запуска).
  4. Чтобы сделать это возможным, необходимо скомпилировать клиент после установки IP.
  5. Клиент работает как фоновое приложение без какого-либо графического интерфейса или консольного окна. Поэтому добавление IP-адреса на стороне клиента не является тем, что я ищу. Самые большие новички должны иметь возможность просто запускать клиента, и их работа выполнена.

Я утверждал, что могу просто распаковать javac (из Java-приложения), затем записать класс в файл (как полную строку), а затем запустить консольную команду, которая использует javac.exe для компиляции исполняемого файла jar. Но, конечно, это не так просто. Моя проблема в том, что я не хочу помещать всю JDK-папку в серверное приложение, просто для компиляции клиента. Кто-нибудь из вас знает, как я могу справиться с этим?

Важно, что мне приходится сражаться с компьютерами, у которых не установлен JDK, только стандартная JRE, у которой на борту нет компилятора (конечно).

Теги:
sockets
serversocket

1 ответ

2

Это определенно не лучший способ обойти это. Существует несколько альтернативных подходов, которые были бы намного проще:

  1. Передайте IP-адрес или имя хоста сервера клиентскому приложению в качестве параметра (например, через командную строку). Это не требует никаких изменений для клиента, но потребует, чтобы у вас был какой-то способ передать этот параметр.

  2. Если вы хотите стать действительно умным, потенциально вы можете указать, что имя клиентского приложения содержит IP (например, как шестнадцатеричное значение: клиент, подключенный к 127.0.0.1 можно назвать client-7f000001.jar). Однако вам нужно было бы убедиться, что он не переименован.

  3. Вставьте текстовый файл, содержащий IP-адрес сервера в файле JAR клиента. Поскольку JAR - это просто ZIP-архив, для этого вам не нужен компилятор.

  • 0
    Моя точка зрения точно!
  • 0
    К вашему 1-му пункту: как я могу передать IP, когда нет соединения? IP является основой всего дальнейшего общения, но без него клиенты даже не знают, где они должны «слушать». Или я что-то не так понял? 3-й: Это действительно сработает ... чем больше я об этом думаю, тем сочувствительнее звучит. Тогда я мог бы просто отредактировать этот текстовый файл и «распаковать» скомпилированный клиент. Я думаю, что это хорошая альтернатива. Но вопрос: так сложно что-то скомпилировать или это немного накладные расходы? Спасибо за вашу помощь! :)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню