groovysh
Windows 8 에서 Groovy Shell ( ) 을 열려고 시도했지만 다음과 같은 결과가 나타납니다.
java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs
at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
위의 메시지를 인쇄 한 후 쉘이 예상대로 시작되었습니다.
답변
데니스 대답이 맞습니다. 그러나 솔루션을 좀 더 자세하게 설명하고 싶습니다 (Windows 사용자의 경우).
- 시작 메뉴로 이동
regedit
하여 검색 필드에 입력하십시오 . - 경로 탐색
HKEY_LOCAL_MACHINE\Software\JavaSoft
(윈도우 10는 지금 여기를 갖고있는 것 같아요 :HKEY_LOCAL_MACHINE\Software\WOW6432Node\JavaSoft
) - JavaSoft 폴더를 마우스 오른쪽 버튼으로 클릭하고
New
->를 클릭하십시오.Key
- 새 키의 이름을 지정하면
Prefs
모든 것이 작동합니다.
또는 *.reg
다음 내용 으로 파일을 저장하고 실행 하십시오.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs]
답변
다음 레지스트리 키를 수동으로 만들어 문제를 해결할 수있었습니다.
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
답변
이것은 실제로 JDK 버그입니다. 수년에 걸쳐 여러 차례보고되었지만 8139507 에서만 마침내 Oracle에 의해 심각하게 채택되었습니다.
의 JDK 소스 코드에 문제가있었습니다 WindowsPreferences.java
. 이 클래스에서 두 노드는 다음 userRoot
과 systemRoot
같이 정적으로 선언되었습니다.
/**
* User root node.
*/
static final Preferences userRoot =
new WindowsPreferences(USER_ROOT_NATIVE_HANDLE, WINDOWS_ROOT_PATH);
/**
* System root node.
*/
static final Preferences systemRoot =
new WindowsPreferences(SYSTEM_ROOT_NATIVE_HANDLE, WINDOWS_ROOT_PATH);
이것은 클래스가 처음으로 참조 될 때 두 정적 변수가 시작되고 이로 인해 HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
(= 시스템 트리)에 대한 레지스트리 키 가 작성되지 않은 경우 작성됩니다.
따라서 사용자가 자신의 코드로 모든 예방 조치를 취하고 시스템 트리를 만지거나 참조하지 않더라도 JVM은 실제로 인스턴스화하려고 시도 systemRoot
하여 경고를 발생시킵니다. 흥미로운 미묘한 버그입니다.
2016 년 6 월 JDK 소스에 대한 수정 사항이 있으며 Java9 이후 버전입니다. u202에있는 Java8에 대한 백 포트 도 있습니다 .
당신이 보는 것은 실제로 JDK의 내부 로거의 경고입니다. 예외는 아닙니다. 사용자 코드가 실제로 시스템 환경 설정을 원하지 않는 한 경고를 안전하게 무시할 수 있다고 생각하지만 그 경우는 거의 없습니다.
보너스 정보
Java 1.7.21 이전의 버전에서는 버그가 나타나지 않았습니다. 그때까지 JRE 설치 프로그램이 레지스트리 키 HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
를 작성 하여 버그를 효과적으로 숨길 수 있기 때문 입니다. 반면에 시스템에 JRE를 설치하기 위해 설치 프로그램을 실행하지 않아도되거나 최소한 Sun / Oracle의 의도는 아닙니다. 아시다시피, Oracle은 JRE for Windows .tar.gz
를 몇 년 동안 형식 으로 배포 해 왔습니다.
답변
64 비트 버전의 Windows에서이 문제를 해결하려는 경우 다음 키를 만들어야합니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs
답변
문제는 간단한 콘솔로 레지스트리를 편집 할 수 없다는 것입니다. 레지스트리를 직접 편집 할 필요없이 groovysh
관리 권한으로 한 번만 실행하면 됩니다. 모든 후속 실행은 오류없이 작동합니다.
답변
Windows 8 64 비트에서 Apache Jmeter를 시작할 때 비슷한 문제가 발생했습니다.
[]apache-jmeter-2.13\bin>jmeter
java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Mkorsch 설명과 함께 Dennis Traub 솔루션을 성공적으로 사용했습니다. 또는 확장자가 “reg”인 파일을 작성하여 다음에 쓸 수 있습니다.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs]
… 그런 다음 실행하십시오.
답변
다음과 같은 메시지가 나타납니다.
Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002
그리고이 레지스트리 키 중 하나를 만든 후에 사라졌습니다.내는 64 비트이므로 그렇게 시도했습니다.
32 bit Windows
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
64 bit Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs