我已經搜索了很多使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文檔指出:「某些虛擬機啓動時只檢查一次,因此使用java命令的-D選項設置爲 ...」。請注意,它沒有聲明這些屬性只能以這種方式設置。
使用JAVA_OPTS
環境變量將僅用於某些應用程序中工作的建議。這取決於應用程序的啓動器/包裝器腳本的功能。標準java.exe
和javaw.exe
命令當然不不搭理$JAVA_OPTS
這同樣適用於_JAVA_OPTIONS
... ...這是一個我從來沒見過。
我試圖把這種從命令提示,但其拋出無錯誤-Djava.net.preferIPv6Stack」不被識別爲一個內部或外部的命令,可操作的程序或批處理文件。 – user27
仔細閱讀'java'命令的手冊條目*。如果您正確使用'-D'選項,它將起作用。 –
手動輸入不適用於我的情況,或者可能是我無法正確執行,希望注射能夠正常工作。 thnkx – user27