instalar - install groovy windows 7
Advertencia de Groovy Shell "No se pudo abrir/crear el nodo raĆz de prefs..." (8)
El problema es que una consola simple no puede editar el registro. No es necesario editar el registro a mano, simplemente inicie el groovysh
una vez con privilegios administrativos. Todos los lanzamientos posteriores funcionan sin error.
Intenté abrir Groovy Shell ( groovysh
) en Windows 8 y obtuve el siguiente resultado:
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.
Después de imprimir el mensaje anterior, el shell comenzó como se esperaba.
Estaba recibiendo el siguiente mensaje:
Could not open/create prefs root node Software/JavaSoft/Prefs at root 0x80000002
y desapareció después de crear una de estas claves de registro, la mía es de 64 bits, así que solo intenté eso.
32 bit Windows
HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs
64 bit Windows
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/JavaSoft/Prefs
Esto es en realidad un error JDK. Se ha informado varias veces a lo largo de los años, pero solo en 8139507 finalmente fue tomado en serio por Oracle.
El problema estaba en el código fuente de JDK para WindowsPreferences.java
. En esta clase, los nodos userRoot
y systemRoot
se declararon estáticos como en:
/**
* 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);
Esto significa que la primera vez que se haga referencia a la clase se iniciarán ambas variables estáticas y con esto se intentará crear la Clave del Registro para HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs
(= árbol del sistema) si aún no existe.
Entonces, incluso si el usuario tomara todas las precauciones en su propio código y nunca tocara o hiciera referencia al árbol del sistema, entonces la JVM en realidad trataría aún de crear systemRoot
instancia del sistema systemRoot
, causando la advertencia. Es un error sutil interesante.
Hay una solución comprometida con la fuente JDK en junio de 2016. Será interesante ver si se transferirá a Java 8.
Lo que ves es realmente una advertencia del registrador interno del JDK. No es una excepción Creo que la advertencia se puede ignorar de forma segura ... a menos que el código de usuario realmente desee las preferencias del sistema, pero eso rara vez es el caso.
Información de bonificación
El error no se reveló en versiones anteriores a Java 1.7.21, porque hasta entonces el instalador de JRE crearía la clave de registro HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs
para usted y esto efectivamente ocultaría el error. Por otro lado, en realidad nunca se le ha requerido ejecutar un instalador para tener un JRE en su máquina, o al menos esto no ha sido la intención de Sun / Oracle. Como sabrá, Oracle ha estado distribuyendo el JRE para Windows en formato .tar.gz
durante muchos años.
Esto me pasó a mí.
Aparentemente es porque Java no tiene permiso para crear claves de registro.
La respuesta de Dennis es correcta. Sin embargo, me gustaría explicar la solución de una manera un poco más detallada (para el usuario de Windows):
- Vaya a su Menú de Inicio y escriba
regedit
en el campo de búsqueda. - Navegue a la ruta
HKEY_LOCAL_MACHINE/Software/JavaSoft
(Windows 10 parece tener ahora esto aquí:HKEY_LOCAL_MACHINE/Software/WOW6432Node/JavaSoft
) - Haga clic derecho en la carpeta JavaSoft y haga clic en
New
->Key
- Nombra las nuevas
Prefs
clave y todo debería funcionar.
Alternativamente, guarde y ejecute un *.reg
con el siguiente contenido:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs]
Pude resolver el problema creando manualmente la siguiente clave de registro:
HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs
Si alguien está tratando de resolver esto en una versión de 64 bits de Windows, es posible que deba crear la siguiente clave:
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/JavaSoft/Prefs
Tuve un problema similar al iniciar apache jmeter en Windows 8 64 bit:
[]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.
Exitosamente usó la solución de Dennis Traub, con explicaciones de Mkorsch. O puede crear un archivo con la extensión "reg" y escribir en él lo siguiente:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Prefs]
... luego ejecútalo.