web-dev-qa-db-ja.com

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

JavaにはJava7u25以降が必要ですが、iReportは1.6で動作する必要があるため、新しいCentOSに2つのCassandra JREをインストールしました。

次に、コマンドラインから各プログラムを起動して、使用するバージョンを各プログラムに指示する方法を教えてください。

/etc/profileファイルを変更する必要がありますか?もしそうなら?

8
Irene

$PATH で両方を使用しても意味がありません。1つしか使用されないためです。たとえば、別の名前にシンボリックリンクすることができます。 Java6-これを試したことはありませんJavaで動作するかどうかはわかりません。

これを行う最良の方法は、そのうちの1つ(おそらく1.6)を/opt/Java6のような場所にインストールし、1.7をデフォルトのままにすることです。次に、6を使用する場合:

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

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

これを1つの特定のアプリケーションに対して自動化するには:

#!/bin/sh

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

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

7
goldilocks

これは、ターミナルエミュレーターからの起動と、デフォルトの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が必要になる場合があります。

0
Max Power