Как установить Java 8 на Kali Nethunter

sed и perlпо умолчанию работают на линиях; ваша проблема охватывает несколько строк. Поэтому совпадение по вашему вводу по умолчанию невозможно. Два распространенных обходных пути — либо работать со всем файлом сразу, либо использовать конечный автомат, который работает построчно, но отслеживает то, что было просмотрено. Метод всего файла, поиск ваших данных в файле inputи сохранение только нужного бита:

$ perl -0777 -ple 's{<!--\s*(<Manager pathname="" />)\s*-->}{$1}' input
<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<Manager pathname="" />
$ 

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

$ perl -nle 'if (m{<Manager pathname="" />}) { readline } else { print $prev } $prev=$_; END{ print $prev }' input

<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<Manager pathname="" />
$ 

После этого, вероятно, следует выполнить diff, чтобы подтвердить, что правки изменили только то, что требуется, а затем, возможно, patchиспользовать для применения этого различия к будущим версиям файла, что имеет то преимущество, что предупреждает о невозможности для исправления файла и некоторых средств для восстановления из немного других файлов.

$ perl -i.old..
$ diff input.old input > input.patch

Третий метод заключается в том, чтобы полностью разобрать XML в древовидную форму в памяти, а затем манипулировать этим деревом до желаемого нового состояния, а затем создать эту новую форму. Это имеет то преимущество, что с меньшей вероятностью будет вызвано, скажем, случайным пробелом или другими изменениями, из-за которых приведенные выше регулярные выражения не будут соответствовать (, то есть вышеприведенные методы более хрупкие ), но будут более сложными. для настройки и в зависимости от используемого парсера и эмиттера могут внести нежелательные изменения во входной файл.

0
28.02.2021, 16:34
2 ответа

Загрузите JDK с официального сайта(требуется подписка )или используйте следующую команду:

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn/java/jdk/8u281-b09/89d678f2be164786b292527658ca1605/jdk-8u281-linux-x64.tar.gz?AuthParam=1614342179_659c3e77bffb9a532e2e87404c0c6647

, затем установите его:

sudo mkdir /usr/lib/jvm
mv 'jdk-8u281-linux-x64.tar.gz?AuthParam=1614342179_659c3e77bffb9a532e2e87404c0c6647' jdk-8u281-linux-x64.tar.gz
sudo tar xvf jdk-8u281-linux-x64.tar.gz -C /usr/lib/jvm

Добавьте javaи javacкupdate-alternatives:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_281/bin/java" 100
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_281/bin/javac" 100

установить jdk1.8по умолчанию:

sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_281/bin/java

Проверьте это:

java -version

пример вывода:

java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
0
18.03.2021, 22:28

Ребята, мне удалось решить эту проблему, добавив эту строку в мой sources.list:

debhttp://security.debian.org/debian-securityрастянуть/обновить основной а затем я выполнил эту команду:

apt-update

А потом это:

apt install openjdk-8-jdk

И, наконец, это:

sudo update-alternatives --config java

Затем просто выберите Java 8 и все, Java работает:)

2
18.03.2021, 22:28

Теги

Похожие вопросы