2013-11-29 1 views
0

У меня есть простая программа Java, которая использует:Установка Java Web Start из приложения

Runtime.getRuntime().exec("/usr/bin/javaws", [path for JNLP file]) 

открыть файл JNLP с помощью Java Web Start.

Однако мне нужно иметь дело с сценарием несоблюдения javaws. Поэтому мне нужно проверить, установлен ли он, и если это не так, установите его. Любая идея, как сделать любой из этих (или обоих)?

+0

Разве веб-запуск не включен в каждую установку JRE? Если вы работаете в JVM, наверняка веб-запуск уже установлен. – VGR

ответ

0

Во-первых, вы предполагаете, что путь к javaws равен /usr/bin/javaws, что может и не быть.

Если бы это было так просто, то вы можете проверить, существует ли файл:

File javawsFile = new File("/usr/bin/javaws"); 
if (! javawsFile.exists()) { 
    System.out.println("javaws not installed"); 
} 

Сказав, что Java не должен быть установлен в любом конкретном месте. Таким образом, вы не можете предположить, что это находится в /usr/bin/. Многие люди загружают двоичную zip-версию java и просто распаковывают ее на свой выбор местоположения и устанавливают переменную окружения JAVA_HOME.

Теперь вы можете пойти по пути разрешения переменной JAVA_HOME, но даже тогда она сообщит вам, установлены ли javaws - или нет.

Если javaws не установлен, на самом деле нет способа установить его - кроме запроса пользователю перейти на веб-сайт java и загрузить его.

Путь, который вы даете, находится в стиле * nix. В этом случае для доступа к новым приложениям потребуется корневой доступ - это не то, что вы можете просто создать.

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

+0

Если то, что вы говорите в первой половине вашего ответа, было правдой (что я полностью согласен), чем это должно быть тривиально для d/l Java и распаковать его в временную папку с распаковкой, затем установить JAVA_HOME и запустить javaws , Разве это не так? И откуда вы знаете, какие обязанности или обязанности нет pr0crstnation101? Я этого не делаю, поэтому я просто предлагаю, чтобы это было возможно, и остальное остальное для себя. – ajeh

+1

@ajeh Можно было бы скачать приложение javaws и поместить его в каталог temp. Однако это поведение типично для шпионского или вредоносного кода - вы пытаетесь установить программное обеспечение на машине, на которую пользователь не согласился. Кроме того, загрузка правильной версии javaws была бы немного сложной. Вам нужно будет идентифицировать архитектуру машины и загрузить правильную сборку javaws. Подводя итог этому: (A) подозрительное поведение и может оскорбить антивирусное программное обеспечение и (B), было бы довольно сложно сделать это надежным на разных платформах. – jwa

+0

И еще раз, вы не знаете, согласился ли пользователь или нет, вы просто подозреваете, что искатель делал что-то неправильно. Он может делать это в своей корпоративной сети в контролируемой среде. Кто мы, чтобы полиция в Интернете? – ajeh