1

私は自分のソフトウェアのパッケージ化に取り組んでいて、JREのインストールはどのように機能するのか疑問に思いました。ローカルシステムにバイナリをコピーし、それに応じてクラスパスを設定するだけですか、それともインストーラーによって他の手順が実行されますか?

Windowsの場合、JREバイナリが保存されているので、C:\Program Files\Java\jre7このフォルダを他のマシン(同じプロセッサ32ビットまたは64ビット)にコピーして、JREを機能させることができますか。もしそうなら、設定する必要がある環境変数は何ですか?

4

4 に答える 4

2

このフォルダを他のマシン (同じプロセッサ 32 ビットまたは 64 ビット) にコピーして、JRE を機能させることはできますか?

はい、問題ありません。ダブルクリックできるように .jar 拡張子も登録したい場合を除きます。

ftypeその場合は、 コマンドとコマンドをチェックしてくださいassoc。たとえば、バッチファイルまたはインストーラー内からそれを行うことができます。

その場合、設定する必要がある環境変数は何ですか?

環境変数を設定する必要はありません。

アプリケーションを起動するとき (たとえば、バッチ ファイルを使用) に、javaw.exe (または java.exe) へのパスを正しく修飾していることを確認してください。

于 2012-04-17T21:20:44.210 に答える
1

JRE全体をサブディレクトリに置き、サブディレクトリに基づいてjava.exeを参照するだけです。これは、他の製品によってかなり頻繁に行われます。

環境変数を設定する必要はありません。

アップデート

これが JRE ツールキット (Maven や Ant など) ではない商用アプリケーションである場合は、グローバル環境変数 JAVA_HOME、PATH、または CLASSPATH の設定に依存しないでください。実行時にアプリケーションのコンテキストで自動的に設定するバッチ ファイルを作成する場合は、問題なく動作します。ただし、それらがシステムに設定されることに依存しないでください。

誰かがこれらを変更して、1.7、1.8 ベータ、または JRE の任意のサブバージョンを使用してアプリケーションを破壊するだけで済みます。彼らがしたことは、Ant のドキュメントを読み違えたため、JAVA_HOME をばかげたものに変更したことです。

Ant や Maven などの JDK と連携して動作するツールセットを提供している場合は、インストールされている JRE/JDK を使用することをお勧めします。それがツールの目的だからです。

于 2012-04-17T21:20:29.660 に答える
0

短いバージョンは、場合によって異なります。しかし、ほとんどの場合、共有環境で JRE を動作させるには、バイナリ互換性とライブラリ パスの制約で十分です (作業中の一部のマシンで行っているように)。

Java はリクエストを処理するための仮想マシンを提供し、システムが所有する他の機能とはまったく独立してそれを行うことができるため、クラスパスとバイナリの処理に関する直感は当てはまります。ただし、サードパーティのライブラリが提供する一部の OS パッケージで提供される、整形式でシステム固有のパスとライブラリのセットを必要とするライブラリで問題が発生する場合があります。

つまり、インストーラーから Java をインストールするオプションがある場合、これにより、すべてのクラスパスの詳細、すべてのライブラリ、すべてのログ機能、およびすべてのシステム固有のエラータが考慮されることが保証されるため、Andrew Finnell が指摘するように、環境変数を手動で設定する必要があります。ほとんどのニーズには、これらの厳密なサブセットのみが必要ですが (他の回答を参照)、このクラスの問題を限定するときに最も興味深いのはコーナー ケースです。

于 2012-04-17T21:23:30.160 に答える
0

引数を指定しない場合、JRE インストーラーは必要なバイナリ ファイルと実行可能ファイルをインストールしますが、JRE インストールを構成するために必要な Windows レジストリ エントリも作成します。

「-static」オプションを使用してインストールすることもできます (JRE インストーラーのドキュメントを参照)。この場合、指定されたパスにファイルをコピーする以外は何もしません。

その後、手動で環境変数が必要になります。コマンドラインの場合、最も一般的なものは、PATH、JAVA_HOME、および CLASSPATH です。

于 2012-04-17T21:23:40.550 に答える