You see a Windows
RegCreateKeyEx(…​) returned error code 5 warning message on the console, but no functionality is affected.
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.
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.filesystem 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
regeditin the search field to start the Registry Editor.
Navigate to the path
HKEY_LOCAL_MACHINE\Software\JavaSoftin the Registry Editor.
JavaSoftfolder and select
Name the key
Close the Registry Editor.