Запуск старых java-апплетов в Ubuntu

При работе со старыми IPMI-консолями серверов, периодически возникает проблема с невозможностью запуска старых версий джава-апплетов на последней версии openjdk. Самый простой путь решения проблемы — установить дополнительно старую версию java.

1. Установим Java

# основное ставим из официальных репозиториев 
apt install -y icedtea-8-plugin icedtea-netx icedtea-plugin openjdk-8-jdk 
# старенькую джаву скачиваем по ссылке: 
# http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 
# (требуется регистрация) 
# И распаковываем архив 
tar xvzf jdk-7u80-linux-x64.tar.gz 
# переносим к остальным джава-машинам 
mv jdk1.7.0_80 /usr/lib/jvm/ 
# и добавляем старую версию java в альтернативы 
update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.7.0_80/bin/javaws 1 
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 1

2. Немного автоматизируем

Чтобы постоянно не менять версии джава вручную через команду: sudo update-alternatives —config javaws можем сделать пару скриптов:

cat set_java7.sh 
#!/usr/bin/env bash

sudo update-alternatives --set java /usr/lib/jvm/jdk1.7.0_80/bin/java
sudo update-alternatives --set javaws /usr/lib/jvm/jdk1.7.0_80/bin/javaws

cat set_java_latest.sh 
#!/usr/bin/env bash

sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
sudo update-alternatives --set javaws /usr/lib/icedtea-web/bin/javaws

chmod +x set_java_latest.sh 
chmod +x set_java7.sh 

Чтобы при смене версии джавы не вводить пароль администратора можно через команду visudo или просто в /etc/sudoers добавить строку:

YOUR_USERNAME ALL = NOPASSWD: /usr/bin/update-alternatives

Теперь при запуску скриптов система не будет просить пароль

3. Добавляем в исключения алерты по безопасности для 7й джавы

При открытии ipmi-консоли через http-соединение нередко 7я джава ругается на не секьюрное соединение и выдает ошибку типа: «Your security settings have blocked an application signed with an expired or not-yet-valid cert». Для быстрого добавления в исключения таких алертов можем добавить функцию в конец .bashrc

#Java security
function _jsec() {
echo "http://$1" >> ~/.java/deployment/security/exception.sites
echo "https://$1" >> ~/.java/deployment/security/exception.sites
echo "host $1 added"
}

# перезапускаем сеанс BASH
source .bashrc
# и добавляем в исключения нужный сервер
_jsec 10.10.10.10