You see a Windows RegCreateKeyEx(…​) returned error code 5
warning message on the console, but no functionality is affected.
What happens ?
When you run a Lucy-based application or the LuciadLightspeed demo, the console prints harmless warnings such as these:
java.util.prefs.WindowsPreferences#<init> Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Note that this warning does not affect any of the functionality of Lucy or the LuciadLightspeed demo.
Why does this happen?
Lucy and the LuciadLightspeed demo both use the java.util.prefs.Preferences
mechanism to make certain settings persistent. On Windows, those persistent settings are stored in the registry. The warning
message is triggered when the Software\JavaSoft\Prefs
node cannot be created in the registry.
Both Java 7 and Java 8 suffer from an issue with the Preferences
mechanism, which prevents Java from storing preferences at system level (see JDK-8138597 in the JDK bug database). Luciad has no control over that issue. However, because Lucy as well as the LuciadLightspeed demo store their preferences
at a user level, the problem does not affect those applications. In spite of the warning message, they work just fine.
How can I remove the warning ?
There are three known workarounds to this problem:
-
Configure Java’s logging system so that it doesn’t show the warning. You can add the following lines to your logging configuration file, so that the warning isn’t shown in your logs.
# reduce the log level for the java.util.prefs package, because it always # logs warnings about the systemRoot of the preferences, even if the application # only ever uses the userRoot. # see JDK issue https://bugs.openjdk.java.net/browse/JDK-8139507 java.util.prefs.level = SEVERE
You can specify the logging configuration flag using the
java.util.logging.config.file
system property. See the API documentation of Java’s LogManager for more information. -
Run and close the application at least once with administrator rights. If you run the application once as an administrator, the necessary nodes will be created in the registry. The next time you run the application as a regular user, you won’t see the warning anymore.
-
Manually create the node in the Windows registry:
-
Go to the Windows Start Menu and type
regedit
in the search field to start the Registry Editor. -
Navigate to the path
HKEY_LOCAL_MACHINE\Software\JavaSoft
in the Registry Editor. -
Right-click the
JavaSoft
folder and selectNew→Key
. -
Name the key
Prefs
. -
Close the Registry Editor.
-