2013-11-28 1 views
5

IPv6를 사용하는 여러 곳에서 이중 스택 컴퓨터 IPv6을 사용할 수 있도록 검색했습니다. 많은 사람들이 기본적으로 false로 설정된 java.net.preferIPv6Addresses = true를 설정하려고 대답했습니다.여기서 java.net.preferIPv6Addresses = true를 설정합니다.

이 변경 사항을 정확히 어디에 적용해야하는지, 즉 파일을 편집해야하는지 또는이 코드를 넣기 위해 Java 코드를 작성해야하는지 알고 싶습니다.

답변

7

설정이 시스템 속성에 들어가야하고 Java 클래스 라이브러리의 관련 부분이 초기화되기 전에 설정이 있어야합니다.

이렇게하는 "폭탄 증거"방법은 설정을 JVM에 명령 줄 매개 변수로 전달하는 것입니다. 예 :

java -Djava.net.preferIPv6Addresses=true ... com.example.MainClass <args> 

또한

System.setProperty("java.net.preferIPv6Addresses", "true"); 

사용하여 설정을 주입하는 응용 프로그램을 코딩 할 수 있지만 주입 1 곧 일어나는 것을 확인해야합니다, 그것은 사소한하지 않을 것입니다.

1 - "충분히 빨리"는 JVM 네트워킹 코드의 정적 초기화가 발생하기 전에 의미합니다. 이것은 복잡한 응용 프로그램에서 달성하기가 어려울 수 있습니다. Network Properties 설명서에 "일부는 VM 시작시 한 번만 검사되므로 은 java 명령의 -D 옵션을 사용하여으로 설정하는 것이 가장 좋습니다." 이러한 속성은 그 방법으로 만 설정할 수 있다고 명시하지 않습니다.


일부 응용 프로그램에 대해 작동합니다 JAVA_OPTS 환경 변수를 사용하는 제안. 그것은 응용 프로그램의 실행기/래퍼 스크립트가 무엇을하는지에 달려 있습니다. 표준 java.exejavaw.exe 명령 확실히 내가 한 번도 본 적이 없다 하나입니다 동일 _JAVA_OPTIONS 적용 $JAVA_OPTS

에 대한 관심을 ... 지불하지 않습니다.

+0

에서 나는 명령 프롬프트에서이를 넣어 시도했지만 그 내부 또는 외부 명령, 실행할 수있는 프로그램, 또는 배치 파일로 인식되지 않는 오류 - -Djava.net.preferIPv6Stack '가 발생합니다. – user27

+0

'java' 명령 *에 대한 매뉴얼을주의 깊게 읽어보십시오. '-D' 옵션은 올바르게 사용하면 작동합니다. 내 케이스에 –

+0

수동 입력이 작동하지 않거나 제대로 작동하지 않을 수 있습니다. thnkx – user27

0

Java 실행 파일을 실행하기 전에 환경 경로에 입력해야합니다. 리눅스

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

Windows 컴퓨터에서이 작업을 수행하고 있으므로 변수 이름을 지정해야합니다. – user27

+0

이동 : 내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 환경 변수 -> 시스템 변수에서 이름 JAVA_OPTS 및 각각의 값 -Djava ... –

+0

으로 새 이름을 만듭니다. ** _ JAVA_OPTIONS **가 아닌 JAVA_OPTS – RealHowTo

관련 문제