異なるJavaバージョンを使用して2つのプログラムを実行する

異なるJavaバージョンを使用して2つのプログラムを実行する

Cassandraにはjava7u25以降が必要で、iReportには1.6が必要なため、新しいCentOSに2つのJAVA JREをインストールしました。

コマンドラインから各プログラムを起動し、各プログラムに使用するバージョンをどのように通知できますか?

ファイルを変更する必要がありますか/etc/profile?それではどうでしょうか?

答え1

どちらも連れて行くのは意味がありません。$PATH一つだけ使うようになるからです。たとえば、シンボリックリンクを別の名前に関連付けることができます。java6私はJavaで試したことがなく、動作しているかどうかはわかりません。

これを行う最善の方法は、その1つ(おそらく1.6)を同様の場所にインストールし、/opt/java61.7をデフォルト値のままにすることです。次に6を使用したい場合:

export PATH=/opt/java6/bin:$PATH

コマンドラインから始めてください。これらすべてを1つのスクリプトに入れることもできます。 Cassandraを削除しない限り、後で同じシェルでCassandraを実行しようとしないでください$PATH(確認する簡単な方法はですecho $PATH)。

特定のアプリケーションに対してこれを自動化するには、次のようにします。

#!/bin/sh

export PATH=/opt/java6/bin:$PATH
exec /path/to/application

$PATHその後、通常のファイル(たとえば)のどこかに配置し、/usr/local/bin実行可能であることを確認してから(chmod 755 whatever.sh)そのようにアプリケーションを起動できます。これは$PATH起動プロセスを妨げません。

答え2

私のプログラムはデフォルトのopenJRE-11を使用して実行できないため、これはターミナルエミュレータで起動したときとデスクトップアイコンランチャーで起動すると動作します。 XFCEでDebian-10ブレーカーを使用する

/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication' また試してみてください: JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATH /home/username/myapplication

各Javaバージョンのエイリアスを作成することもできるので、j8o =のような短いコマンド/bin/sh -c 'JAVA_HOME=/usr/lib/jvm/java-8-oracle/ PATH=$JAVA_HOME/bin/:$PATHと最終的に毎日のコマンドはj8o ./myapplication

デフォルトのjavaを変更するには、update-alternatives --config javaプロンプトに従ってください。必要に応じて、javac(バイトコードコンパイラ)のデフォルト値を設定するためにも同じ方法を使用できます。デフォルト値を変更するにはsudoが必要な場合があります。

関連情報