Как проверить, установлена ​​ли Java на rhel

Хорошо! Я добился прогресса!

Я попытался отправить свою работу с помощью

qsub -V run.sh

Как я узнал, это экспортирует все переменные из командной среды qsub в пакетную среду. Это отлично сработало, и теперь пакетная среда знает, где находится qsub :-).

Но у меня новая проблема.

Мне нужно отправить задания в кластер с помощью

qsub -P Projectname

И моя программа этого не знает! Он просто вызывает «qsub».

Есть ли способ обойти это без перекомпиляции? Я не хочу перекомпилировать, потому что я запускаю программу удаленно, и у меня нет всех нужных библиотек на удаленном компьютере (и я не могу установить их без прав root: -))

Спасибо за вашу помощь!

2
10.05.2016, 20:08
2 ответа

Возможно, вам придется настроить Alternatives для указания на java, это объясняется в моей ссылке.

Я заметил, что при попытке сохранить Oracle Java установленной вместо openjdk, вы должны убедиться, что все связано правильно и запущена правильная версия java.

Если вы используете машину с системой RPM, я использовал шаги, приведенные в ссылке ниже, чтобы заставить ее работать.

Установите Oracle Java JDK CentOS

Команда Java ниже будет работать как проверка того, что альтернативы были настроены правильно.

java -version

[root@somecomputer thebtm]# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

Другим побочным узлом является то, что если у вас уже установлена Oracle Java, и вы загружаете и устанавливаете более новую версию java rpm, вам нужно обновить альтернативы, чтобы указать на новую версию java

[root@somecomputer thebtm]# alternatives --config java

There are 5 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/java/jdk1.8.0_66/bin/java
   2           /usr/java/jdk1.8.0_66/jre/bin/java
   3           /usr/java/jre1.8.0_77/bin/java
   4           /usr/java/jdk1.8.0_77/jre/bin/java
 + 5           /usr/java/jre1.8.0_91/bin/java

Enter to keep the current selection[+], or type selection number: 5
[root@somecomputer thebtm]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
2
27.01.2020, 21:59

Я хотел бы верить, что она не установлена, если так, то почему система вернула java: /usr/bin/java?

whereis не разрешает симлинк. Поэтому, если /usr/bin/java все еще существует, даже если цель симлинка нарушена, система все равно вернет java: /usr/bin/java. Я рекомендую вам использовать type -a java, чтобы получить правильный результат. Обратите внимание, что целевой файл симлинка ИЛИ исходный файл не симлинка, оба должны быть исполняемыми (chmod +x для его установки), иначе команда type -a вернет значение not found, даже если файл существует (type все равно вернет значение независимо от исполняемости).

Итак, я могу упростить ситуацию следующим образом:

whereis: Все равно возвращает найденное, даже если симлинк сломан или неисполним.

type: Возвращать найденное, даже неисполняемое, и возвращать не найденное, если симлинк нарушен.

type -a: Возвращает not found, если симлинк разорван или неисполнимый.

Все они возвращают not found, если входной файл не существует.

Итак, что я могу посоветовать, это установить JDK снова, который "Oracle JDK" предпочтительнее, чем "OpenJDK".

Хорошую статью можно найти здесь.

Вот что вы можете сделать (Предполагается, что ваша система x64):

sudo rpm -ivh jdk-8u91-linux-x64.rpm
sudo rpm -ivh jdk-8u91-linux-x64-demos.rpm 

Номер версии 8u91 вышеуказанной версии постоянно обновляется, поэтому вы всегда должны посещать сайты Oracle, чтобы узнать последнюю версию. Нажав на кнопку JDK DOWNLOAD, вы перейдете на эту страницу, где указан номер последней версии и ее правильное имя файла.

Вы также можете скачать документацию, настоящую ссылку на которую можно найти здесь страница, и распаковать ее (Предположим, что ваш JDK был установлен по адресу /usr/java/jdk1.8.0_91/):

sudo unzip jdk-8u91-docs-all.zip -d /usr/java/jdk1.8.0_91/ #optional

Затем используйте эти две команды для выбора правильных javac и java. Я полагаю, что у вас есть только один вариант (Этот пример показывает jdk1.8.0_74 из-за того, что у меня не последняя версия 8u91):

$ sudo alternatives --config javac

There are 2 programs which provide 'javac'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/bin/javac
   2           /usr/java/jdk1.8.0_74/bin/javac

Enter to keep the current selection[+], or type selection number: 2
$
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/jre/bin/java
 + 2           /usr/java/jdk1.8.0_74/jre/bin/java

Enter to keep the current selection[+], or type selection number: 2
$ 
3
27.01.2020, 21:59

Теги

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