私は、IPv6をデュアルスタックマシンIPv6にするための多くの場所を検索しました。 java.net.preferIPv6Addresses = trueを設定すると答えた人が多く、デフォルトではfalseに設定されています。ここでjava.net.preferIPv6Addresses = trueを設定する
私はこれらの変更をどこで行うべきか、つまりどのファイルか、これを入れるためにいくつかのJavaコードを書く必要があるかどうかを知りたいと思います。
私は、IPv6をデュアルスタックマシンIPv6にするための多くの場所を検索しました。 java.net.preferIPv6Addresses = trueを設定すると答えた人が多く、デフォルトではfalseに設定されています。ここでjava.net.preferIPv6Addresses = trueを設定する
私はこれらの変更をどこで行うべきか、つまりどのファイルか、これを入れるためにいくつかのJavaコードを書く必要があるかどうかを知りたいと思います。
システムプロパティに設定する必要があります。Javaクラスライブラリの関連部分が初期化される前に、設定が必要です。
これを行うための "爆弾のような"方法は、設定をJVMにコマンドラインパラメータとして渡すことです。例えば
java -Djava.net.preferIPv6Addresses=true ... com.example.MainClass <args>
また
System.setProperty("java.net.preferIPv6Addresses", "true");
使用して設定を注入するために、アプリケーションをコーディングできていますが、注射は十分にすぐに起こることを確認する必要があり、それは些細なことではないでしょう。
1 - 「すばやく」とは、JVMネットワークコードの静的初期化が発生する前の状態を意味します。これは、複雑なアプリケーションでは実現するのが難しい場合があります。 Network Propertiesのドキュメントには、「一部はVMの起動時に一度だけチェックされるため、は、javaコマンドの-Dオプションを使用してに設定するのが最適です。これらのプロパティはそのようにしか設定できないことは述べていません。
JAVA_OPTS
環境変数を使用しての提案が唯一のいくつかのアプリケーションのために動作します。それは、アプリケーションのランチャー/ラッパースクリプトが何をするかによって異なります。標準java.exe
とjavaw.exe
コマンドは確かには$JAVA_OPTS
に注意を払っていない同じことが、私が前に見ていませんでした一つである... _JAVA_OPTIONS
に適用されます。
Java実行可能ファイルを実行する前に、環境パスに配置する必要があります。 は、Linux
export JAVA_OPTS="-Djava.net.preferIPv4Stack=true" (same for ipv6)
に私は、コマンドプロンプトからこれを入れて試してみましたが、その内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されないエラー - -Djava.net.preferIPv6Stack」をスローします。 – user27
'java'コマンドのマニュアルエントリを注意深く読んでください。 '-D'オプションは正しく使用すると動作します。 –
私の場合は手動入力が機能しないか、正しく動作しない可能性があります。 thnkx – user27