Groovy-Shell Warnung "could not open/create prefs root node ..."
Ich versuchte, öffnen Sie die Groovy-Shell (groovysh
) auf Windows 8 und bekam folgende Ausgabe:
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.
Nach dem drucken der Nachricht über die shell gestartet, wie erwartet.
Dies ist aufgrund eines Fehlers: bugs.java.com/bugdatabase/view_bug.do?bug_id=6790382
Einstellungen in einer Datei gespeichert, wie die backing-store sollte vermeiden das Thema ganz. Es gibt Situationen, in denen sich auf den end-Benutzern das ändern Ihrer abominable Registrierung ist keine praktikable Lösung.
Es ist eine bekannte Java bug noch um auf WIndows 10 und update-112. Führen Sie einfach das Programm einmal aus einer erhöhten Eingabeaufforderung und es geht Weg.
Einstellungen in einer Datei gespeichert, wie die backing-store sollte vermeiden das Thema ganz. Es gibt Situationen, in denen sich auf den end-Benutzern das ändern Ihrer abominable Registrierung ist keine praktikable Lösung.
Es ist eine bekannte Java bug noch um auf WIndows 10 und update-112. Führen Sie einfach das Programm einmal aus einer erhöhten Eingabeaufforderung und es geht Weg.
InformationsquelleAutor Dennis Traub | 2013-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dennis Antwort richtig ist. Aber ich möchte erklären, die Lösung in ein bisschen mehr detaillierte Weise (für Windows User):
regedit
in das Suchfeld ein.HKEY_LOCAL_MACHINE\Software\JavaSoft
(Windows 10 scheint nun diese hier:HKEY_LOCAL_MACHINE\Software\WOW6432Node\JavaSoft
)New
->Key
Prefs
und alles sollte funktionieren.Alternativ speichern Sie und führen Sie einen
*.reg
- Datei mit dem folgenden Inhalt:Aber ich habe bereits einen Schlüssel mit dem Namen Prefs. Dann, warum gibt Sie diese Fehler???!!!
Kann ich bestätigen, es funktioniert nicht, wenn man unter HKEY_CURRENT_USER. Eine bessere Frage, warum auf der Erde ist ein Java-basiertes Produkt binden sich die Windows Registry?
Es ist nicht möglich, für eine consumer-Anwendung, um den Benutzer auffordern, zu gehen, und Geige mit der Registrierung. Warum Java immer umsetzen halb-Lösungen wie dieser.
Mein Windows 10 installieren hat beide Schlüssel Pfade oben angedeutet, zur Fixierung meiner installation erforderlich hinzufügen, die Einstellungen auf den Schlüssel HKEY_LOCAL_MACHINE\Software\JavaSoft nicht HKEY_LOCAL_MACHINE\Software\WOW6432Node\JavaSoft
InformationsquelleAutor MKorsch
War ich in der Lage, das problem zu beheben, indem Sie manuell erstellen Sie den folgenden Registrierungsschlüssel:
Ich sehe das bei software, die wir verkaufen. Eine automatische/programmatische fix wäre besser, wenn Sie ' ve bekam man diese auch. Zu sagen, meine end-Benutzer direkt in regedit ist eine beängstigende Aussicht. Gibt es einen Weg, um Java zu tun, diese automatisch auf Windows 8.1 (das ist die einzige Plattform, ich sehe die Fehler auf).
Fehler tritt in Windows 10 als gut, und dieser fix funktioniert
Ich bin auf Windows 10. Dieser arbeitet für mich.
InformationsquelleAutor Dennis Traub
Dies ist eigentlich ein JDK bug. Es wurde berichtet mehrere Male über die Jahre, aber nur in Acht Millionen eins hundert neun und dreißig tausend fünf hundert sieben wurde es schließlich ernst genommen von Oracle.
War das problem in der JDK source code für
WindowsPreferences.java
. In dieser Klasse, beide KnotenuserRoot
undsystemRoot
wurden als static deklariert, in:Dies bedeutet, dass das erste mal die Klasse referenziert beide statische Variablen würde eingeleitet werden und von diesem der Registry-Schlüssel für
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
(= Baum) wird versucht werden, erstellt werden, wenn es nicht bereits vorhanden ist.Also selbst wenn der Benutzer nahm alle Vorsichtsmaßnahmen, die in seinem eigenen code und nie berührt oder auf die verwiesen wird das system Baum, dann ist die JVM würde eigentlich noch versuchen zu instanziieren
systemRoot
ist, wodurch die Warnung. Es ist eine interessante subtilen Fehler.Gibt es einen fix engagiert sich für die JDK-source-Juni 2016 und es ist ein Teil von Java9 ab. Es gibt auch eine backport für Java8, die in u202.
Was Sie sehen, ist wirklich eine Warnung aus der JDK-internen logger. Es ist nicht eine Ausnahme. Ich glaube, dass die Warnung kann ignoriert werden .... es sei denn, der Benutzer-code ist in der Tat wollen Sie die system-Einstellungen, aber das ist sehr selten der Fall.
Bonus-info
Den Fehler nicht selbst offenbaren, die in den Versionen vor Java-1.7.21, weil bis dann das JRE-Installationsprogramm erstellen würde Registrierungsschlüssel
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
für Sie-und dies wäre im Endeffekt verstecken sich die Fehler. Auf der anderen hand, die Sie nie wirklich erforderlich, zum ausführen eines Installers um ein JRE auf Ihrem Computer haben, oder zumindest hat dies nicht Sun/Oracle ' s Absicht. Wie Sie wissen, hat Oracle verteilen die JRE für Windows in.tar.gz
- format für viele Jahre.Hinzu kommt, dass: Es scheint, dass Oracle endlich um, um Zurückportieren dies zu beheben. Es ist Feste in 8u202. (30Sep2018 das neueste release von Java 8 ist u181 so, das Update ist zurück portiert, aber noch nicht veröffentlichte version)
InformationsquelleAutor peterh
Wenn jemand versuchen zu lösen, diese auf einem 64-bit-version von Windows, müssen Sie möglicherweise erstellen Sie den folgenden Schlüssel:
InformationsquelleAutor walkern
Das problem ist, dass simple-Konsole kann nicht die Registrierung Bearbeiten. Keine Notwendigkeit zum Bearbeiten der registry von hand, starten Sie einfach die
groovysh
einmal mit administrativen Privilegien. Alle nachfolgenden Starts arbeiten, ohne Fehler.Die einfachste Antwort, die sollte oben sein.Ich hatte diese Warnung Ausführung von JMeter tests, aber ich fing an, sobald der jmeter.bat als Administrator und die Warnung ist Weg.
InformationsquelleAutor Darksnake
Hatte ein ähnliches problem beim starten von apache jmeter auf windows 8 64 bit:
Erfolgreich eingesetzt, Dennis Traub-Lösung, mit Mkorsch Erklärungen. Oder Sie erstellen eine Datei mit der Endung "reg" und schreiben Sie es in den folgenden:
... dann ausführen.
InformationsquelleAutor razvanone
War ich immer folgende Meldung:
und es war Weg nach dem erstellen eines dieser registry-Schlüssel, meiner ist 64 bit, daher versuchte ich nur, die.
InformationsquelleAutor Sohail Ahmed
Mir das passiert.
Scheinbar ist es da in Java nicht über die Berechtigung zum erstellen von registry-Schlüsseln.
Finden Sie unter: Java: java.util.Einstellungen Scheitern
InformationsquelleAutor Wassa