2017-08-24 9 views
-1

Javaアプリケーションを作成しましたが、いくつかのマシンで動作していますが、いくつかのマシンでは動作していません。私はそれがjreのためであるかどうかわからない。 アプリケーションがjreを使用するパスを見つける方法と、そのアプリケーションが特定の場所でjreを使用するようにする方法を教えてください。事前Javaアプリケーションに特定のjreを使用させます。

+1

JREが先に来て、あなたのアプリは後で来ます。特定のJREの中でアプリを実行させることはできません。アプリが「間違った」バージョンで実行されている場合、アプリを「正常に」終了することしかできません。 –

答えて

0

ありがとうございますしかし、問題は最も可能性の高いメジャーバージョンない限り、JREの不具合が異なるされていないことに注意してください、特定のJREを実行するスクリプトファイルを書き込むことができます。

JavaプログラムでJREを強制実行することはできません。遅すぎるためです。

0

java.homeシステムプロパティの値をチェックすることによって、使用されているJREのパスを見つけることができます。例:JREを変更する

System.out.printf("java.home = %s\n", System.getProperty("java.home")); 

は、あなたのアプリケーションを実行する方法については、特に、依存:

  • あなたは、コマンド・ライン・インターフェースを介して、あなたのプログラムを実行している場合、あなたはPATHを変更する必要があります実行可能な正しいjavaを指すように環境変数を設定します。
  • IDEでプログラムを実行している場合は、JRE_HOMEという環境変数を定義してIDEを再起動するか、プロジェクトの実行コンフィギュレーションを変更する必要があります。

Javaのその他の有用なプロパティの詳細については、https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.htmlを参照してください。

1

手で質問に答えるために、Javaシステムプロパティは、あなたが求めて値を保持:

String jreLocation = System.getProperty("java.home"); 
String javaVersion = System.getProperty("java.version"); 

誤りがある場合は、あなたの問題は、Java(の異なるバージョンによって引き起こされる可能性として、私は、これらの二を追加たとえば、java.lang.UnsupportedClassVersionError)。

特定のJREを強制する観点から、実行中のJavaプログラムから強制的にJVMバージョンを実行することはできません(これはシェルスクリプトなどで行う必要があります)。 「java.home」の値をチェックして、必要なものでなければ終了しますが、これはシステムによって異なるため、これは賢明ではありません。 "java.version"がサポートされている値のセット内にない場合、エラーメッセージを表示して終了する方が少し良いオプションがあります。

ただし、プログラムを実行するために必要なすべてのシステムで動作するように、元の問題を解決するのが最善の方法です。この目的のために、これらの他のシステムでプログラムを実行するときに発生するエラーで新しい質問を開始することをお勧めします。

0

Javaアプリケーションで特定のJREが必要な場合は、アプリケーションをJREを含む「自己完結型」バンドルとしてパッケージ化することをお勧めします。すでに多くの人が指摘しているように、アプリケーションが起動したら、JREはすでに選択されており、唯一のオプションはシステム変数をチェックし、エラーメッセージでアプリケーションを終了することです。

自己完結型アプリケーションバンドルの作成プロセスの詳細は、「Oracleデプロイメントガイド:Self-Contained Application Packaging」を参照してください。

関連する問題