2013-11-28 7 views
5

私は、IPv6をデュアルスタックマシンIPv6にするための多くの場所を検索しました。 java.net.preferIPv6Addresses = trueを設定すると答えた人が多く、デフォルトではfalseに設定されています。ここでjava.net.preferIPv6Addresses = trueを設定する

私はこれらの変更をどこで行うべきか、つまりどのファイルか、これを入れるためにいくつかのJavaコードを書く必要があるかどうかを知りたいと思います。

答えて

7

システムプロパティに設定する必要があります。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.exejavaw.exeコマンドは確かに$JAVA_OPTS

に注意を払っていない同じことが、私が前に見ていませんでした一つである... _JAVA_OPTIONSに適用されます。

+0

に私は、コマンドプロンプトからこれを入れて試してみましたが、その内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されないエラー - -Djava.net.preferIPv6Stack」をスローします。 – user27

+0

'java'コマンドのマニュアルエントリを注意深く読んでください。 '-D'オプションは正しく使用すると動作します。 –

+0

私の場合は手動入力が機能しないか、正しく動作しない可能性があります。 thnkx – user27

0

Java実行可能ファイルを実行する前に、環境パスに配置する必要があります。 は、Linux

export JAVA_OPTS="-Djava.net.preferIPv4Stack=true" (same for ipv6) 
+0

私はWindowsのマシンでそれをやっているので、何が変数名でなければなりません。 – user27

+0

私のコンピュータ - >プロパティ - >高度なシステム設定 - >環境変数 - >システム変数の下で、名前JAVA_OPTSとそれぞれの値-Djava ... –

+0

の新しいものを作成するそれは** _ JAVA_OPTIONS **ではないJAVA_OPTS – RealHowTo

関連する問題