Java 5で実行されているアプリケーションがいくつかありますが、Java 6に基づくアプリケーションを導入したいと思います。両方のJavaバージョンをWindowsで共存させることはできますか?
さまざまなアプリケーションに適切なJavaバージョンを設定するためのコントロールパネル、またはその他の設定方法はありますか?その特定のアプリケーションを実行するために使用されるJavaのバージョンは何ですか?
回答:
もちろん、Windowsでは複数のバージョンのJavaを使用できます。また、アプリケーションごとに異なるJavaバージョンを使用できます。アプリケーションはどのように開始されますか?通常、次のようなものがあるバッチファイルがあります
java ...
これにより、PATH変数を使用してJava実行可能ファイルが検索されます。したがって、Java 5が最初にPATHにある場合、Java6アプリケーションの実行で問題が発生します。次に、特定のJavaバージョンを使用するようにバッチファイルを変更する必要があります。たとえばJAVA6HOME、値を使用して環境変数を定義しC:\java\java6(Java 6がこのディレクトリにインストールされている場合)、バッチファイルの呼び出しを変更します。
%JAVA6HOME%\bin\java ...
STATIC引数を取りますが、JDKも同様ですか?
複数のJRE / JDKバージョンを並べてインストールすることは絶対に可能です。さらに、Sunは(Program Filesの下に)それぞれに異なるフォルダーを作成しているため、これを行うために特別なことをする必要はありません。
各アプリケーションでどのJREが機能するかを確認するためのコントロールパネルはありません。基本的に、機能するJREは、PATH環境変数の最初のものになります。これ、またはJAVA_HOME変数を変更するか、特定のcmd / batファイルを作成して、パスに異なるJREを持つ必要なアプリケーションを起動できます。
私は、Javaファイルを追跡するためのWindowsのCLASSPATH、JAVA_HOME、およびPATHのアイデアの不器用さに愕然としました。複数のJREと、それに満足する方法のために、私はここに着きました。私よりはるかに賢い人からの情報を逆流させることなく、私はむしろこの問題に関する彼の記事を指摘したいと思います。それは私にとってそれを完全に解決します。
記事:Ted Neward:複数のJavaホーム:Javaアプリに独自のJREを提供
サーバー側の開発言語としてのJavaの指数関数的成長に伴い、Java開発ツール、環境、フレームワーク、および拡張機能が指数関数的に成長しました。残念ながら、これらのツールのすべてが同じJavaVMインストールでうまく連携できるわけではありません。サーブレット2.1準拠の環境が必要なものもあれば、2.2が必要なものもあります。JDK 1.2以降でのみ実行されるものもあれば、JDK 1.1でのみ実行されるもの(およびそれ以降)もあります。Swing 1.0より前の「com.sun.swing」パッケージが必要なものもあれば、「javax.swing」パッケージ名が必要なものもあります。
さらに悪いことに、この問題は企業内でも見られます。わずか6か月前からJavaを使用して開発されたシステムは、新しい(一見無関係な)アプリケーションリリースに必要なJava拡張機能のインストールにより、突然「機能しなくなる」可能性があるためです。これは、企業全体でのJavaアプリケーションの展開を複雑にする可能性があり、悪名高い「Installing-this-app-breaks-my-system」の問題がMicrosoftのDLLスキームで始まってから5年経った今でも、なぜ私たちはまだそれをはるかに超えて進歩していません。(実際、新しい.NETイニシアチブは、今説明した悪名高い「DLL-Hell」問題の解決を目指しています。)
このホワイトペーパーでは、特定のアプリケーションが独自のプライベートJREを受け取り、顧客(またはシステム管理者)を狂わせることなく複数のJava環境を共存できるようにJavaインストールを構成する方法について説明します...
SDKManを使用して、同じマシンに複数のバージョンのJava DevelopmentKitをインストールできます。
SDKManに関するいくつかのポイントは次のとおりです。
_HOMEおよびPATH環境変数の設定について心配する必要はありません。SDKManは、Mac OSX、Linux、Cygwin、Solaris、FreeBSDなどのUNIXベースのプラットフォームで実行でき、次のコマンドを使用してインストールできます。
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
SDKManはbashで記述されており、システムに存在するために必要なのはcurlとzip / unzipのみであるためです。最初にCygwinをインストールすることにより、WindowsにもSDKManをインストールできます。または for Windows環境をから、上記のコマンドを実行ます。
コマンドsdk list javaは、SDKManを使用してインストールできるJavaバージョンのリストを提供します。
Java8のインストール
$ sdk install java 8.0.201-oracle
Java9のインストール
$ sdk install java 9.0.4-open
Java11のインストール
$ sdk install java 11.0.2-open
Javaバージョンのアンインストール
11.0.2-openなどのJDKバージョンをアンインストールする場合は、次のように実行できます。
$ sdk uninstall java 11.0.2-open
現在のJavaバージョンの切り替え
すべての端末とアプリケーションに対して1つのバージョンのJDKをアクティブ化する場合は、次のコマンドを使用できます。
sdk default java <your-java_version>
上記のコマンドは、PATH変数とJAVA_HOME変数も自動的に更新します。詳細については、私の記事「同じマシンに複数のバージョンのJavaをインストールする方法」を参照してください。
「java-version:1.5」などを使用してJavaを呼び出すと、正しいバージョンのJavaで実行する必要があります。(明らかに、1.5を必要なバージョンに置き換えます。)
JavaがWindowsに適切にインストールされている場合、Javaが使用するレジストリに保存されている各バージョンのVMへのパスがあるため、Windowsの環境バージョンをいじる必要はありません。
自分のJavaバーシンでjmeterを起動するときは、簡単なスクリプトを使用します
setlocal
set JAVA_HOME="c:\java8"
set PATH=%JAVA_HOME%\bin;%PATH%;
java -version
Javaを「ポータブル」にするには、次の方法を使用できます。
Java Web Startを使用する場合(ローカルファイルシステムであっても、任意のURLからアプリケーションを起動できます)、アプリケーションに適したバージョンを見つけることができます。
Java Web Startを使用すると、複数のJREをインストールして、必要なものを呼び出すことができます。勝つと、.batファイルを作成できます。
1-オンラインバージョン:< your_JRE_version \ bin \ javaws.exe> -localfile -J-Djnlp.application.href = <.jnlp file.jnlpのURL > -localfile -J "< path_temp_jnlp_file_ .jnlp>"
2-キャッシュから起動:< your_JRE_version \ bin \ javaws.exe> -localfile -J "< path_of_your_local_jnlp_file .jnlp>"