Groovy Shell 경고 "prefs 루트 노드를 열거나 만들 수 없습니다..."
그루비 셸을 열려고 했는데groovysh
Windows 8 의 경우는, 다음의 출력이 표시됩니다.
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
(Windows 10에는 다음과 같은 기능이 있는 것 같습니다.HKEY_LOCAL_MACHINE\Software\WOW6432Node\JavaSoft
) - Java Soft 폴더를 마우스 오른쪽 버튼으로 클릭하고
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
다음과 같이 static으로 선언되었습니다.
/**
* 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 instra는 레지스트리 키를 작성했습니다.HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
버그를 효과적으로 숨길 수 있습니다.한편, 머신에 JRE가 존재하기 위해서, 인스톨러를 실행할 필요는 없습니다.적어도 Sun/Oracle의 의도는 아니었습니다.아시다시피 Oracle은 Windows용 JRE를 배포하고 있습니다..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
나한테도 이런 일이 있었어
Java에는 레지스트리 키를 만들 수 있는 권한이 없기 때문인 것 같습니다.
Java: java.util을 참조하십시오.설정 실패
문제는 역시 레지스터 키가 없는 것입니다.수동으로 생성할 수 있습니다.
또는
관리자 권한으로 프로그램을 한 번 실행하면 자동으로 만들 수 있습니다.그러면 프로그램에 필요한 권한이 부여되며 정상적으로 실행되어도 정상적으로 작동합니다.
언급URL : https://stackoverflow.com/questions/16428098/groovy-shell-warning-could-not-open-create-prefs-root-node
'bestsource' 카테고리의 다른 글
Windows에 가장 적합한 무료 C++ 프로파일러는 무엇입니까? (0) | 2023.04.14 |
---|---|
코드에서의 WPF 이미지 소스 설정 (0) | 2023.04.14 |
Panda를 사용하여 여러 헤더가 포함된 엑셀 시트 읽기 (0) | 2023.04.14 |
유전확장 변수를 피하는 방법은? (0) | 2023.04.14 |
WPF ScrollViewer에서 스크롤을 터치 활성화 하는 방법이 있습니까? (0) | 2023.04.14 |