2013-11-28 176 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文檔指出:「某些虛擬機啓動時只檢查一次,因此使用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